{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Naive Bayes Classification\n",
    "\n",
    "Before we worry about complex optimization algorithms or GPUs, we can already deploy our first classifier, relying only on simple statistical estimators and our understanding of conditional independence. Learning is all about making assumptions. If we want to classify a new data point that we've never seen before we have to make some assumptions about which data points are *similar* to each other.\n",
    "\n",
    "One popular (and remarkably simple) algorithm is the Naive Bayes Classifier. Note that one natural way to express the classification task is via the probabilistic question: *what is the most likely label given the features?*. Formally, we wish to output the prediction $\\hat{y}$ given by the expression:\n",
    "\n",
    "$$\\hat{y} = \\text{argmax}_y \\> p(y | \\mathbf{x})$$\n",
    "\n",
    "Unfortunately, this requires that we estimate $p(y | \\mathbf{x})$ for every value of $\\mathbf{x} = x_1, ..., x_d$. Imagine that each feature could take one of $2$ values. For example, the feature $x_1 = 1$ might signify that the word apple appears in a given document and $x_1 = 0$ would signify that it does not. If we had $30$ such binary features, that would mean that we need to be prepared to classify any of $2^{30}$ (over 1 billion!) possible values of the input vector $\\mathbf{x}$.\n",
    "\n",
    "Moreover, where is the learning? If we need to see every single possible example in order to predict the corresponding label then we're not really learning a pattern but just memorizing the dataset. Fortunately, by making some assumptions about conditional independence, we can introduce some inductive bias and build a model capable of generalizing from a comparatively modest selection of training examples.\n",
    "\n",
    "To begin, let's use Bayes Theorem, to express the classifier as\n",
    "\n",
    "$$\\hat{y} = \\text{argmax}_y \\> \\frac{p( \\mathbf{x} | y) p(y)}{p(\\mathbf{x})}$$\n",
    "\n",
    "Note that the denominator is the normalizing term $p(\\mathbf{x})$ which does not depend on the value of the label $y$. As a result, we only need to worry about comparing the numerator across different values of $y$. Even if calculating the demoninator turned out to be intractable, we could get away with ignoring it, so long as we could evaluate the numerator. Fortunately, however, even if we wanted to recover the normalizing constant, we could, since we know that $\\sum_y p(y | \\mathbf{x}) = 1$, hence we can always recover the normalization term.\n",
    "Now, using the chain rule of probability, we can express the term $p( \\mathbf{x} | y)$ as\n",
    "\n",
    "$$p(x_1 |y) \\cdot p(x_2 | x_1, y) \\cdot ... \\cdot p( x_d | x_1, ..., x_{d-1} y)$$\n",
    "\n",
    "By itself, this expression doesn't get us any further. We still must estimate roughly $2^d$ parameters. However, if we assume that ***the features are conditionally independent of each other, given the label***, then suddenly we're in much better shape, as this term simplifies to $\\prod_i p(x_i | y)$, giving us the predictor\n",
    "\n",
    "$$ \\hat{y} = \\text{argmax}_y \\> = \\prod_i p(x_i | y) p(y)$$\n",
    "\n",
    "Estimating each term in $\\prod_i p(x_i | y)$ amounts to estimating just one parameter. So our assumption of conditional independence has taken the complexity of our model (in terms of the number of parameters) from an exponential dependence on the number of features to a linear dependence. Moreover, we can now make predictions for examples that we've never seen before, because we just need to estimate the terms $p(x_i | y)$, which can be estimated based on a number of different documents.\n",
    "\n",
    "Let's take a closer look at the key assumption that the attributes are all independent of each other, given the labels, i.e., $p(\\mathbf{x} | y) = \\prod_i p(x_i | y)$. Consider classifying emails into spam and ham. It's fair to say that the occurrence of the words `Nigeria`, `prince`, `money`, `rich` are all likely indicators that the e-mail might be spam, whereas `theorem`, `network`, `Bayes` or `statistics` are good indicators that the exchange is less likely to be part of an orchestrated attempt to wheedle out your bank account numbers. Thus, we could model the probability of occurrence for each of these words, given the respective class and then use it to score the likelihood of a text. In fact, for a long time this *is* preciely how many so-called [Bayesian spam filters](https://en.wikipedia.org/wiki/Naive_Bayes_spam_filtering) worked."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optical Character Recognition\n",
    "\n",
    "Since images are much easier to deal with, we will illustrate the workings of a Naive Bayes classifier for distinguishing digits on the MNIST dataset. The problem is that we don't actually know $p(y)$ and $p(x_i | y)$. So we need to *estimate* it given some training data first. This is what is called *training* the model. Estimating $p(y)$ is not too hard. Since we are only dealing with 10 classes, this is pretty easy - simply count the number of occurrences $n_y$ for each of the digits and divide it by the total amount of data $n$. For instance, if digit 8 occurs $n_8 = 5,800$ times and we have a total of $n = 60,000$ images, the probability estimate is $p(y=8) = 0.0967$.\n",
    "\n",
    "Now on to slightly more difficult things—$p(x_i | y)$. Since we picked black and white images, $p(x_i | y)$ denotes the probability that pixel $i$ is switched on for class $y$. Just like before we can go and count the number of times $n_{iy}$ such that an event occurs and divide it by the total number of occurrences of y, i.e. $n_y$. But there's something slightly troubling: certain pixels may never be black (e.g. for very well cropped images the corner pixels might always be white). A convenient way for statisticians to deal with this problem is to add pseudo counts to all occurrences. Hence, rather than $n_{iy}$ we use $n_{iy}+1$ and instead of $n_y$ we use $n_{y} + 1$. This is also called [Laplace Smoothing](https://en.wikipedia.org/wiki/Additive_smoothing)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import tqdm\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "from IPython import display\n",
    "display.set_matplotlib_formats('svg')\n",
    "import torch\n",
    "from torch import tensor\n",
    "from torchvision import transforms, datasets\n",
    "\n",
    "data_transform = transforms.Compose([transforms.Grayscale(), transforms.ToTensor(), transforms.Normalize(mean=[0],std=[1])])\n",
    "\n",
    "mnist_train = datasets.MNIST(root='./data', train=True, download=True, transform=data_transform)\n",
    "mnist_test  = datasets.MNIST(root='./data', train=False, download=True, transform=data_transform)\n",
    "\n",
    "# Initialize the counters\n",
    "xcount = torch.ones((784,10), dtype=torch.float32)\n",
    "ycount = torch.ones((10), dtype=torch.float32)\n",
    "\n",
    "for data, label in mnist_train:\n",
    "    y = int(label)\n",
    "    ycount[y] += 1\n",
    "    xcount[:,y] += data.reshape((784))\n",
    "\n",
    "# using broadcast again for division\n",
    "py = ycount / ycount.sum()\n",
    "px = (xcount / ycount.reshape(1,10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "for data, label in mnist_train:\n",
    "    y = int(label)\n",
    "    ycount[y] += 1\n",
    "    xcount[:,y] += data.reshape((784))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we computed per-pixel counts of occurrence for all pixels, it's time to see how our model behaves. Time to plot it. This is where it is so much more convenient to work with images. Visualizing 28x28x10 probabilities (for each pixel for each class) would typically be an exercise in futility. However, by plotting them as images we get a quick overview. The astute reader probably noticed by now that these are some mean looking digits ..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
       "<svg height=\"61.688136pt\" version=\"1.1\" viewBox=\"0 0 572.4 61.688136\" width=\"572.4pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       " <defs>\n",
       "  <style type=\"text/css\">\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\n",
       "  </style>\n",
       " </defs>\n",
       " <g id=\"figure_1\">\n",
       "  <g id=\"patch_1\">\n",
       "   <path d=\"M 0 61.688136 \n",
       "L 572.4 61.688136 \n",
       "L 572.4 0 \n",
       "L 0 0 \n",
       "z\n",
       "\" style=\"fill:none;\"/>\n",
       "  </g>\n",
       "  <g id=\"axes_1\">\n",
       "   <g id=\"patch_2\">\n",
       "    <path d=\"M 7.2 54.488136 \n",
       "L 54.488136 54.488136 \n",
       "L 54.488136 7.2 \n",
       "L 7.2 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pf389c7207b)\">\n",
       "    <image height=\"48\" id=\"image148e753ccf\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"7.2\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABNtJREFUaIHtmW1oVmUYx39zJrLNaS6ppj5TY6lrmx/2RkZgxhhZgxwriYo1EEUDX6D6WH2L8kPSG/QCfgiSzIplL1RmFGLlsrTpcjN1GzhmtpVNRcvNPlz/69xHfXyY+WE8j14w/v/7OufsOfd9vd73ycqBc6SxjBntF7hSuTaB0Za0n8DYkd54nXCCcAowXdyxIHbvafE+YW+MDwgHhf8CQyN9kQsksy2QLZwIzBG/R7gUyH9Yg4eENcLxQIf458KN0LbX6BapvhMeIFjFLTdSi6S9BbJSFTL39ypgmXj97SIvAxUrNFgldDudBbrE3QQvwPs9Rtcb7N5uuBn4Rnf5U4NYbFzRBGYJlwKr52rwtrBiLbBSg/HC34QHCc7g184CXxntec/wRYOh9fC67vpY2A78JZ5qImnvQimDuFBYB9CsQUWJSBHwmtFzWspPdakbmCQ+T3hbIXCH8US94dMWztmTYOVzpso+YzgEKOajdJsssDPbAl6Y5kwE5rvWl3QXdCognjT4/SPDbiz1Atx6o0hjLzTL9ysShtdXGy7bCSeNNq8z7AeO69EDwmQWSDkBr74UAjf5wINyVxRxfXrxV3SlI/Zs8VHD+16Fqh+kfErZqFF4cwIeMT6u21T1m0JK8AruaSEume1CUfrKJslUT0R5rksaN3U7YbX2Cw8CDT8ab3jmgn/V2APl+oHFwwCUtULlYVPt1m3HkrxjZlug30kvYfozfW2nwfRDQEi3Hh1DhNSn2OQMMCw+6VfDhW9JUQRU6+maU4a1MP8No17cPCbiwZzZFvA0dmQAprZrUK00QVHUfSZmGhbLZ9sJFnB79UsP8KWw5gvD3IVAmVZ+hl+EebJAlAAvdwLuQq3AVO+2mnYYZs2G8nzjjX8DULcuTECvE/UzcbdyV2gVLthDcNGEHHJWL1lamAmHL/2Ome1Cvoo/A/fL3FHfu6CDqLdZ8hkAVQbU7Q2rfUh4krBa7la+iaGPEO3kGUwm6qdSrXJmW8BXqh1o6zVe1iJl5Q7IW2y8QjuHVbbeTWvgtMy3VbcfIaRR3yh52iUHyOV8bTZRJXVPuOxeyCtxF7BNvGyTyHzggX0aqMFrksMcheXPG51ywnAHIaBnCGf7D5UQjjZ8AoNY/Yk9l0wy24XcZAPAT+KtWpWqjUBppw3mKlOP00ZlzZbITxo2GFbusTYbwDvsW9RNUwtklWug3nO/1R9I3gO5ZLYFXAYJxzxeRUs+hNxSDZ741jBfFshbDKt1GlFqIZjYDgnPqZOFi4S1CawhAv78xfDrUOiidJtErg4L/EPwQ99UfQA8ql4lalZWfiLSBCw3eneXcB/wh67fIPSjvGlERy6ed1tA24eoKP7vCQxzcWXdChRou7joJSlzlOkfexd4XEo/fywgZH5V22hC78C+nUbVYm87Dm0jmMDV4UJDmBtBCKg2YpVUEb7oWY0HT8EKtaZj10p5LxevvKriwTdB50Kd6rlaCF1rss28S9pbIOXZaDLx45JcQkHyI927hEuA/Ac1cLwT+yoC4RRA3Ssb4HtF7GaptnN+J3spuewJuGQTXCj+1Qasx/HjLz+ILCb0a75R8lOMPfqL646RuolzufpcKJX4F50xMR7XuXhbHV/ZoRTXUsk1C4y2pL0Frk1gtCXtJ/Af9YI2iXDBFF4AAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_3\">\n",
       "    <path d=\"M 7.2 54.488136 \n",
       "L 7.2 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_4\">\n",
       "    <path d=\"M 54.488136 54.488136 \n",
       "L 54.488136 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_5\">\n",
       "    <path d=\"M 7.2 54.488136 \n",
       "L 54.488136 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_6\">\n",
       "    <path d=\"M 7.2 7.2 \n",
       "L 54.488136 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_2\">\n",
       "   <g id=\"patch_7\">\n",
       "    <path d=\"M 63.945763 54.488136 \n",
       "L 111.233898 54.488136 \n",
       "L 111.233898 7.2 \n",
       "L 63.945763 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p167dc499a9)\">\n",
       "    <image height=\"48\" id=\"imagef78c3a9c77\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"63.945763\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAwNJREFUaIHtmd9KVFEUxn8z08TgFEkmSWaCJUERiBRFgnSRCAXddNtNF71ED9ADdBHd9RLVVdAflFBDgsiKIiJrUEQxRJGG0S72t2ZvZ0Y6jkdkOOe7+dbZ55xh7/Wttdc+azJtsEkLI7vfE9gt0gXsN1p+AQeiPpgXHxS3Ae2BHd7LArma95eBhcAGKEee5vZIhgJ54LDsLvEF4GJgAxwXF4J318TTwAvZU+J58TpQiTbfOiRDgRw+pi0XjgA9sgfFxV4ZR4OX5eZKCb5o6Kt4Sfw3eHynSkRaQAWfcBYSfwLbFlVdUR8+jj44KpbqJ2ny54CNiBOuRTJCqIxLNPBb4CzwQ7Ztj90mRT9wTPaKo/xbWNWQKdfI6xaqUUMpGQqAzwE5lBIwI9u42+Q5CVySrUwtBO+aEqZq6O09SeJGP7yA31VsXx+xgQJw/pSzV34CbmPabuLNJjAkKYQM5rV14Lfsd+L3ys6BJYBRd3FlHIDMmRk2vrkhC0fzfLNVGJKogKGCT0oL/efigSmAbl3dd3TjDoWHzozD84bkKgDek1bIxuzGU3CHDYCbju5CrxSI02uZ3XQlrGrahDrFj4CRzXO6+ii+zKvMJAD3NGLH6TSJ44KdcV4DI29Un4etPI9y7YRToE8nUztOpwrEjVmAJ7oYfiajA2456+pjx991Z57mVYhlAbXJXAb/AcwD8e3qp9t1jUyI1/A1ZacLSUMoRNgLWv3luDiuZB46VG1pDMltgyokJRofraMgVSBEqMCc+PRLGT2Tvv1w1tHgJ8cz+BxYFEft2qUKhMgGbOWLaXEv/tDU4agfz6aY5cIq0VTYkxDK4atytYs1wdavIfzZqQ9fE+wIWCbasTsNIdjqeUM1hMy17cHNoEsHrnHcGdj2vuV8qsD/YB4yj63gnfxZydA/5p+3XLb0WKa+XxrVs7v6oDFY6Ng/NV34HcYa1u3U5XA1YRfxC54L7kWpzi0fQrEo0Ai1/5Fl2b4Dl37Q7AVqvRpHD6gRWl6BdAH7jZZfwD/357nU+9yaywAAAABJRU5ErkJggg==\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_8\">\n",
       "    <path d=\"M 63.945763 54.488136 \n",
       "L 63.945763 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_9\">\n",
       "    <path d=\"M 111.233898 54.488136 \n",
       "L 111.233898 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_10\">\n",
       "    <path d=\"M 63.945763 54.488136 \n",
       "L 111.233898 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_11\">\n",
       "    <path d=\"M 63.945763 7.2 \n",
       "L 111.233898 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_3\">\n",
       "   <g id=\"patch_12\">\n",
       "    <path d=\"M 120.691525 54.488136 \n",
       "L 167.979661 54.488136 \n",
       "L 167.979661 7.2 \n",
       "L 120.691525 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pccdec28207)\">\n",
       "    <image height=\"48\" id=\"imaged905251ac8\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"120.691525\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABKBJREFUaIHtmdtvlFUUxX+9UqdTJZ2qTcHQVkgbm6akxoi2xASqqCGpjcYHEx988Z/gP+HRNxKVKBIfbNKghkBEvNQYvCAQTNNaCkXsdOgFfDhrzfn8Zhgm8QFn6k6atb9zvpk5Z6999uW0IQN3qWFpfNAL+Lfy/wYetNT8BpqrfbFJ2JJ4Tu++iXvLZpmxO2XmNu8zn5b6ZMCWbBM+CuyUvkfYD+Sk2wp54RKwKP2msEC0pC1rWdN88juW9QdwS7heZq31yYAt3y8cB6akj+2WMgUMS/fB+E14Djgd1KWFgPNECybPEcAKsJD6ih+BC9KvCJeESSbKbqBD+JTwMDA2rocjwpdHgXf14C1/LTwGZ/4AIPdFGMn9SvSFlhTm42pXvwk4k1iHXW6lzAbq24WeEI5A8KMk8iYwKb1b+LpwEvZ9ENR9xwJeug7XNe0Tax9aIvgM8FBPwImTkbB54VVhnhgQ6pMBi3fZCtFajnPZU8B2PYwIzcSTwFvSBwL0nYU+nZG7Pwe0adeAdun6ytYu2Hkt6J2a8plwiL7nBgqpF68Cgw4J54Xjn0LWseNgaiNDQK90O2Q2/lyDVr74Z8AfKEYtf/+NazGHpKuARurdhRyuLgtPA4PTenBy6ACelbmasxp8XDhEdKcu4QbwXVDXZHk9Mg18FtQLfwVM5gF7WrmaqD4Z8BlwBvwS6JZDvnpUgzeJxcoLnwfMPqKB3cQz4IPeRZEhm82m/QrOyPLnNHSRmJ3nhA6rSalPBpyqnXfOJ+YWxcTEUdihMoEXhS+dCHjoBDS/rcExYZZiXGluDdi2FjAf2f5WeIXSatSYrGYbKt1KOHxlCCU1RMcYINZKo8K926TsB16Rfkg41EMxJ/j0npSJjsCHGlLe5qfEggspXKfew6jFuyxQWsbMA7PSTwl7bwccmIYDCrvdn2jynTmY0nHMPhbQIXkEdokBJ+RNSqvP9cScpb4ZaEohRCskK0KnfB/EWYIPA7wxE3A4A6jS5KCKHJe7o7D3vaD6lTbiYS1n+ao2YGkjRvNMYiyTes8/eAv4RboD1fAMcEAPz+hNV2f90NQX1F2X4pTdY+vdSli8uyT7DqedRFZcJZrqZMY0K0t5yKWb24f1Cx13iqXTDjGQo/I9U3qNNSsVGVC+pJ1YZ/oiop9SVmztZWK4tZvnspRStaFPNFKMn34/Q3XWrW8GLC3EWzjnnv1AtylwhWDzrRMpsNX3AM9Jd6uQDFtrVa/5H1JVJl4nsu5M2b0tsSCHR3eU24kLd0fZCWS9YzU5G98HXKBYO7uAK1B6BVlO6tuFzMAKscF3D7JyG9od55xRx2yPSSIdvhbuAtS1uHpaFgOzsKrU7QS4QPnL3LTUNwP2wTyxwT8r7ARec6XpONqjTzx9kdjI9AqbiG36RwHep4i+M3Cfv0h157piQ2NpIR5e54NB4HnpEx5zNDpMPOBef4HoHx8HWD0e8DhxA+7IfieW05Wk5l2oKgag9HasgxjOzYrPck9iLtmguCm6LDQhc8Tg4JtLp5H7ydZhoJyYlcbUc7n/YELpfx0rNSrVytZm4L8gNc9AzW/gb6kaIYPb3JykAAAAAElFTkSuQmCC\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_13\">\n",
       "    <path d=\"M 120.691525 54.488136 \n",
       "L 120.691525 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_14\">\n",
       "    <path d=\"M 167.979661 54.488136 \n",
       "L 167.979661 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_15\">\n",
       "    <path d=\"M 120.691525 54.488136 \n",
       "L 167.979661 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_16\">\n",
       "    <path d=\"M 120.691525 7.2 \n",
       "L 167.979661 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_4\">\n",
       "   <g id=\"patch_17\">\n",
       "    <path d=\"M 177.437288 54.488136 \n",
       "L 224.725424 54.488136 \n",
       "L 224.725424 7.2 \n",
       "L 177.437288 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p25fb736eb3)\">\n",
       "    <image height=\"48\" id=\"imagef79c91bb3a\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"177.437288\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABJpJREFUaIHtmc1rXFUYxn9JnNhOOipNh0pqUrU11ZpSGoWqSAtS3URsbRXxA0pFKnTlx8aVdaML/wAXiggq1A8Q/KIKXUgpaqFWbIs0RmKlEkqjMTWOxsSJLs7zzDlzHScjLupMfDfPc+99595zzvu857znTFse/qCJrf18N+DfWtN34IJGHXPCDuGi5F72WWqzwpmEZ7HcaCNqWGtGIB1lgALQI36lcC0wmHCAFR6OHPz6W6DDuvUFcFT8pPA74Q/AL+L/NBpNH4G2WtNol7AoXANsFr9HeOkQ8JAutnkctvoplfGdeTfg68DzgZ48FPAteR8CRsQnhNMNdqC1ImDtLxVa2zcDD4j33SGyGxiy5w7heuFlwMXiSgaOAM8E+pwU/3SAN8fgbXl9LjxDY1GoSmKHoyC0hFYBvdlfDgNTCnjHCwE9L+aBq8SvvUhkCNgZ6B41tzAGwN17gW+qXzENjIvXS+yml1BVBCwhL0yeRsvEJOt/T+RjYCrQs1KJRwzidLt400+B7NwH9/pmf8DbdT0MWyWnb3VrLL6eUp0OtFYEbNahp7QR4igcmZPP93HEzwh9PUucCAYPBtx1ENpO6ebDXwW00wboHAh07YmARwG714tAVQfccK+KblgZGBW3zKaByYy/Z40Zovw8CIuA+/bp4mrhFmGRsHQAS9WBQvIOf7NWMremhBwyR2CK+pVntnbKJ9z+UxAzNNUaQGd0LCePalW3WWutCLj31vJcct0p7pEtAivFvchJxuSII3+JcADiQu3SNi8sUUkoB2eSxlbi1oqAzdJ0BMoJ96D1ALeI3yXsul6klzg0Dl0R8PONmQ+NEDYMxP3DODEC9UqJultK/7A94ZZGEbjRDb9f5FHhdT3A6szbJoHfxVVqf6pV+h34SHPxcXk0Wsy1poSyNkeUkIvjErFWqcx3rkB5krj1cRp/Dbwv/liADwP8uL9CKxI6R1RYPWvtCHhg015al6PAAfF1LwfsdAm6d0/yaifIaioT7c+KpxL3BHBaXi5PZhpoPMxzKpFOJLmMzwRhLwuxU9ufCrjuwBw8rg3ztmf19EEqSbxEb+4NHVkOdMsrrX8WhIRqnkpkNzRdxG1mPrnn5979rhCuB+4UX7xb5BHgGu+yVWW9plr1CXhFddIb8jhOrGQXzpbS5hzw+dByYr3jMqabGJVsfpSI+XHrSyIFYNeXgXu6vVx4E2xUBHx6d5qY0AsvAjbrvZu4idogHAT6LtRFkWqbJSbIGmEvMVQeUvv0xGC4os0TlVBvNqrbAa++OWKiOg37BogniS7OXF8XiPpa5mruBmKaa71tl2BKfy3c/O35rDUl5JB5azlOXCl9JN4/SZSAThS4YpPIbcTa2aMO8JnwcADlNJ9UFuXKrnOKxo7amz4CNRcym3OumziNerA3A9vFO3y2653NFmCZs2WJ8BQcOxvoq7r1YoAPJmC/bh2O3g396VG3A7YOqv+tgeq1wU31TLWSODGlpxKWh5Xjf2pGiRI9J5yep+G21pbQfJY9DE7PjNozPum+Oj37+btnjdrCjsB/wZo+Av934Hxb03fgT9xoCYbZIG28AAAAAElFTkSuQmCC\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_18\">\n",
       "    <path d=\"M 177.437288 54.488136 \n",
       "L 177.437288 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_19\">\n",
       "    <path d=\"M 224.725424 54.488136 \n",
       "L 224.725424 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_20\">\n",
       "    <path d=\"M 177.437288 54.488136 \n",
       "L 224.725424 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_21\">\n",
       "    <path d=\"M 177.437288 7.2 \n",
       "L 224.725424 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_5\">\n",
       "   <g id=\"patch_22\">\n",
       "    <path d=\"M 234.183051 54.488136 \n",
       "L 281.471186 54.488136 \n",
       "L 281.471186 7.2 \n",
       "L 234.183051 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p91ca5363aa)\">\n",
       "    <image height=\"48\" id=\"imagec5f7228d55\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"234.183051\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABDhJREFUaIHtmc1rXFUYxn9JnCSM9mPapA5Wbem0plbagBFcuVATxboQUVDQnYsu3Iv4J7jyL+hCFARXiiIVpbQWoYVqi1DUQtW2lsa0IUVSko6TuDjPM+/p7TCk00WZmb6b573n3jNzz/u8X+fcgTKs0sUyeLdf4E6l6xdwX6cTS8Cw9BHhUIt7pWxOXbhUwHqmN27zPfqHAVvXK74f2CT9IeEjwnHdB1iXzV+UPi/8W3gJmJW+IFwEVqS3Y6V/GLAVShnaylXhHuFu4EHpG4WjwL/SLwjPZGiGbwjzuGgn/cOApZFhozDmzDMO7JBeMWVlWL2WVFvtctxqjuWx5rF2MdBxGq0D16U7KB2ADaDif39YuB4GriZ1/GJCuyCsLWBbSX+40BC3UgwRZLb8JeF8/qBza5UmVRVh2RQSRc6yQrDSTnqbARuxTPjrqLBEpFSPOQWaESAY2JvdUCxs/jnmd2rJtgvwC24mssq2bKxMvABEZZ6ACN69wmkiQuUvk1rAcaJezAmvEwbp30psy+4AXpT+gvCxDcB2XWwoTNgITEp/XViboWnn6ucADKsQTH8alne/VOdWyxcDHXqVAQevDboNeEl67TUpB4CnpLvlzPPe8HopLwvfQdEBj04lfO99AHafhWdPpCEzkP+UC2X/MDBYwBKRDZkWzuwDXtGFegOOC/8E/pPurv8K8Lz0NxLsO5jwud+ZFAM/6YkLNLNtM/vaM/LYaLmAlQJeI2isLvup0WzG9wk+O5/wCNEo7Tqa8N2jUPHzTwgfSFCK/8q3nfcqsQvJHEHt/h+kvHUCxlSfz8vynyQ49XVsVux6zxwCDr+pf/1Io8qj87HJMc4SrmNWWhW03mbAK78K/CJ9/zdSvgTePpz0gqnOAV9pyFZbOgYzH+rig489msA9CRE6i5neKn2uaQEOoiXgL+kn9atTXxAbX9eBXQme/Ba+05Bd6Rgw4/d+VQ5Z0/XW6LHGhfl5Uv/1QsUVLxP719PCqUNEL/S4UJl1+xg8fSXpeS7/57ekb7EbusEagcpYUndq3imiP2p3atebDFiaAUjE6TnhyWWxAGFmB806mJAlf9VQPZu75YgUbwLmSRsMoKZ5NeK0zsHcfwxYGoQVvHE/DWyVT1dNj9PhxehbZFgWCJ9utkzewq3QrJr5easzUruCtiYXqhPHgm7NzhD75Alx7Wy6QGrn4OYNihdwWc9X7UqjsPpHUh2w5Wwx7rpaHXT1tgvlhcyWnM3u263OCs1Ag7D2bDbm4vSjcI+sXs6edy9kxuHms6ii9DYDua/ZIvXs2lYrnhkNkoofREc7RASj9xYuiiPZ7/reHJEwWm0zLQOdfmZtddyYnywX/2yQcKHi97P8kMwLz902/5ZWlK53oY4Z6ESKe9p2wZk/1066noGOP3B0IkWL3u7HjFbS9QzcW8Ddlq5fwP/XPhIIvizMxwAAAABJRU5ErkJggg==\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_23\">\n",
       "    <path d=\"M 234.183051 54.488136 \n",
       "L 234.183051 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_24\">\n",
       "    <path d=\"M 281.471186 54.488136 \n",
       "L 281.471186 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_25\">\n",
       "    <path d=\"M 234.183051 54.488136 \n",
       "L 281.471186 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_26\">\n",
       "    <path d=\"M 234.183051 7.2 \n",
       "L 281.471186 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_6\">\n",
       "   <g id=\"patch_27\">\n",
       "    <path d=\"M 290.928814 54.488136 \n",
       "L 338.216949 54.488136 \n",
       "L 338.216949 7.2 \n",
       "L 290.928814 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p67910d7cfe)\">\n",
       "    <image height=\"48\" id=\"imagec8284c5f60\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"290.928814\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABJBJREFUaIHtmMtrnFUYxn9pHGkmTRxqM8ZLo8RLtLa0JLUWL4jiRsFFEBfi1p1/gTv/AXVVBBeuBDcquFGKQRFjtbZEJKW0NmouNuRSx2hNiImTujjP852TyWScaiFkpi8Mz/ud7zvfnPM+7+18LXm4wjaWHVu9gP8rN1zLl7VWGStfyz+oIle9gZywHchL31mBEBf+l3BZP4BV4Ypwjf++0eZwoVagQ/pe4T7gYen9yRhA+y4y00/K3CPAad0/KxwXloDL0s1OvYxsewZaaqVRB+VNwP3SnxG+DHS+qIuXhE8J23rJPH5uOuAQ8G5QL34S8H09fgI4L31euEhko5Y0NgPOKr3AoPRXPfE14BVd7DEvh4U3J2/5VXga5mT6tzX0ZoAPS3BcQyPCGTbGRTWpGcTpBp7zwu0ujxF9bEULWzYSo75tt5RuKBaDOjgXVwkMHouLXUwWvZrom8m2d6GqDNiwZmAvcI9vrgmHARk8y4ezwhVivu0vBXykBHdqzGZT3m05DAeVYy8kr1qQXlkAU2lMBlxEcgnauHd9HPDKezH1/SS0xfLAvd8G/cFhDU4Q4gbgtoo/6IqEdQsLhHYFagdzzSD2hCngC+kjvwecAZThs9zt5zuIG94p5e6TgOO5suvLx77KmCO6R7Um0dKYLmRxSpsAvpTuwF5jo4V8L0/0jqynWSA0PdZTuTGq5Qr8N2lsBpy+polWdvz1AgekOzuagQ6gS3qnJ/QRHbzyQPAHKLQyXEr+vxYbjc2Aa9Yy0Qq3CAeBAbc+TwsLwlWidU1dnvVHNojpayLWQnUXLFAfA3UdaHLE1sZuM9AHHNPFEXdKdwjPAV8FdVI7mSIWDKNONotnYFRDE8IS8ThqQ1aTxnahNE26Krpi0g8cuU8X7wj3CD8gs1/uRMB5Yuk+JRwK8CnxuDkuXCB6YfMGsaVMtELWjywD/KILVyYzMAa/yfIfaWiYcHYEZn4O+Flyywd917q073EeqMZEXVmoTKzKzhKMAt8sBf3oGxp8VHg8+sRQHPrhz6D61vfJO73gNFHZhSoPNsvJM83hQquEygixA10cg3a11ux/K+Auu9T5bG6WfwtQEANOBHaJ3cSSYBe6TGTdDuoOdz6Z29gMeJdrbIyBc8DA57o4KHze3xYKsF/qs8IuKIqY4lTAx0VneRYu6jEzMUuofRCPmSeFCzQLA5YysazbQmeBAZvka+E+5Y0H/oZbe4L+gjh7YiUGkGnUdesU9IwHvcdtxhmYUUD4LJIy4kxU9wY8Id3AKeW1h5zQ/emiswS3u7M7GqAIFBXFXAqwMhnwx7BgIObWVuiWgdqXsqF1CM3iQmkQpww4Q+a+C3jodQ2MAU/KFw4IC8RzpiuS8+N88mJH8zRMyvIX4tC66dAADNT8uJuKjedSXyAWpD6hs+khYhZt8xGhm3ik9CHetJbIInRGVh8lfuh1rhhJHncarXsDFgfQjmQdHVUwKcAZev0Wu8IisdI7WaQfMfx92+fltKlrHhe6GqmW5lo3uW+pbJXLrO+GN5PrDGy1bHsGrm9gq2Xbb+Af0bdBNAIShtUAAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_28\">\n",
       "    <path d=\"M 290.928814 54.488136 \n",
       "L 290.928814 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_29\">\n",
       "    <path d=\"M 338.216949 54.488136 \n",
       "L 338.216949 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_30\">\n",
       "    <path d=\"M 290.928814 54.488136 \n",
       "L 338.216949 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_31\">\n",
       "    <path d=\"M 290.928814 7.2 \n",
       "L 338.216949 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_7\">\n",
       "   <g id=\"patch_32\">\n",
       "    <path d=\"M 347.674576 54.488136 \n",
       "L 394.962712 54.488136 \n",
       "L 394.962712 7.2 \n",
       "L 347.674576 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p27b4ef7f5a)\">\n",
       "    <image height=\"48\" id=\"image9b28def5ed\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"347.674576\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABINJREFUaIHtmUtonFUUx3/JOElMjYmpYpmSsaaQ0WCtNi0ptVJwWQTBB+LSla66U1yKC3HThRvRld10IfhaiO4EUURRU4NhTJparG3zsG36SJPmNTMuzv/MvZmM6TSzCMOXA8P/zP3ud7/v3vM/j3u/pnYo0cDSvNkvUK9sTWCzZWsCmy0NP4G76rk5JfRVaBGm9YulACxLr0S/vhFJngV8ZbuAjPQnhIPC/dG1ReFfwK/Sh4RjwilgVrpbpVaLNNWaiduE/mKHgFelH3xByrvCvpcI05kWnoQvJ0w9bvDTD4afAD+r13nhLKsp9n/S8BSqyQJp4AHph4THgIFj+vN+n5STwv3AgvRrwsvAb9LfMfjwrOEb8NFNU79Sj3x0p49UTRreAjU5cQuwQ7pbYGAvZgYA3qy44zjwufRR4f3AU9JfNnj9M8O207z2lqlpuUwzMKLeV4TVfKKmCcQUeswbDwO7u/XnsvADg1sfw49q8reYmoGHTpt+VG3ZXsPnKIekF98znACuq5tTyCNVHKGSQaE00CHdqUQPwD36oyBY+sLwF4IH+nLlCR6q8MkrcuI9wD5T791ruG84kG9KOFcxJCTFAhDqnrIUILBTBP5Df88STHVY2AV8K92t49mrPB7lTNk7HPzOrT8jjJ05GRYoAEvSffGYBlb+1Shtqy/mgXnp/cI9WH6DUAQ5qeeje7WkaWAbQa9rAkVCCFM1w8AoRhWAPlHJ6+kLwCnpTo3ngcf1dpmi4bloUC+Z1HaNtXG/WoGXHAo5I3zRGCY4Ya+o5F7XSnDYoQiPaOV3qu2GcCyMVVLiOwNc0mV/dnItUCT420XhP9OQ9XJBSahsgUegoMX+WrGv+wQcPGF6Kqd+7cIZmJNpv1fT76zeG/h7bGgCMYXc10aArGfUA0KP+TlIKaMuDBt+CnyjyxlFoa7oGZ5tnaLjUVu1GsglGRQqECjkpe04cFUOd993anQKdQNHTB2UBYYI/uy+79vUZkLI9HRwPXrW1oamSFgFr9HPE3LVM26BHuEg5Y1D9knDp08Fp8wL3a8g8Hs5urZUca2aJMMCsJajE4R6PafQsdPDagfwoHT5wtE8XNQhkUeVM8Ib0fgeKpeoHjYrJZWGt2/Xyc1UxGa8jJU9rcBV4SSQm8R40onFyHlhp3XaNQqPagIPY3TsBm5pzBSBLgXCccl6xyYNT6E7skAJW6UVzBIt2GqmsLrl7gJMFiBzE1v1KxidVgzbC9DeA5kLZolFzBIL+m1T1zRm7SLQxPpUangL1JzIfKZxmPNq0dO/H95uPwe73KFddgAqL7Ly4mdHWCPj0TPdH4pRW6XUHIWKFThHiEhes3ht1gG0/an39hv6CZtbZezdrYa5Rfhbl3xRZgkn2+sd8iaDQhDM59mxmWCByhOLuHY6oMqzfwxatOIlLa3vSC8RsrJn/GVq+0bQ8Bao+QOHS/xdzPfwzn0/RegEtkuPz3b8dKEyq08R9hlegc5T29ea5Fmgmqw5tWN1+XE72egXSqjzM+t6L1DPS92JNDyF/gMJoDrvZj+HrAAAAABJRU5ErkJggg==\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_33\">\n",
       "    <path d=\"M 347.674576 54.488136 \n",
       "L 347.674576 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_34\">\n",
       "    <path d=\"M 394.962712 54.488136 \n",
       "L 394.962712 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_35\">\n",
       "    <path d=\"M 347.674576 54.488136 \n",
       "L 394.962712 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_36\">\n",
       "    <path d=\"M 347.674576 7.2 \n",
       "L 394.962712 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_8\">\n",
       "   <g id=\"patch_37\">\n",
       "    <path d=\"M 404.420339 54.488136 \n",
       "L 451.708475 54.488136 \n",
       "L 451.708475 7.2 \n",
       "L 404.420339 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pb2351571aa)\">\n",
       "    <image height=\"48\" id=\"image951c3f9f33\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"404.420339\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABMtJREFUaIHtmV1PXFUUhp8BhgIDhcYUkBEppoQWGqEfVE2sH7WxNo0aP656a+KVP8FEE/0lxhuvjCZqNJrGYoy10NiEQKkUUArS1AKl1kIHBi/Wu2YfptNxsBd0RlZy8q6zzz5n9lrv2muvvSdWA2tsQMojellWWzxyn/1sFUhJTwvvCL39v0jZv3d5sKWikE7lQI30ncJWXQBtwmZhnODVOeGULoAZ4XXhDWBJ+mohA4pIQQbEgTrpLcIDwNPSjwgTj7gCLJg6f9VwADirxx5WHkJL3D3wQg0p7RCKTth0jufOSqJJyhPCJBkGdpw37BmCWT2eysLo72xUSpsBj8MywiS7JpwBrnhHn6kJ4WORj8hFjVPQfMN0Zy7O/UtpM+CSJjDgzh4HfpG+Tzmz2/Pjs4Qcuy280HrG1GwG7mcOFGRANKXdFE4R1oaksPtHKccIOdbz7hXY84OpzcoIHnFlBCM2uioXfQiVx+H9QjquRa60rhS2iq5iE7ohBRMpaK8DjmPu6WyExgTU3oJR4FFY/A0eAi4B1VhiuA3ECAwUWqD9fxjwCrMM81Q55vlljI159ZsAjl7C6otZoOsw0AjJ7XD7KuyD5i9tjg8BDcAf2NwqxxiI6SqEhYIM8MHHgErdxzH6K9SWVp95oHoNOuqAMeCVSg3vbej7BvpixIfWiHfB8ogZchkLxW0yoELOiemb+Qwp+hCK5dvQRDcqnrOrhAlCivd06KX2AeBdf+GCcO/HZAqkM+8Yvmjw4TJ8q27TwpuEtcfrsFwVatEzkHcOVGBxWAPUY96vFSaElRg7ztYK5qmVNIykYW8K+Al4OQG8BeyGtjFo64DpMdgPsQFb2Rswz1dhe4UU5mFnIFeoFD0DOeeAe9PjvY4Q3/XCSsKOall4J/LMC9IPhMkLwOOn178x+JLhU/CeVrDv1WOKULbk227mDCEPnSoZswNbOauwtFcPPKz7euCW3lnAaF/A9ruzwF/AIPD8FHBqEdtYngRqoaUfWnbCwDV+H7XfGdG35iIOWRGWZAitq0Y9dCqFXm02ECrOPcJWArUXhQPCKP1eck9+AbsGP7Wbg2+o9QWDE8Mc+tzUr/VknBAy+Tb4pcWAW+MLVIOwiTApDwl7CEz9KvRzoXOEracvcsPALhHAQfezTgGOQ7f2DZ0z4Zu+eSrYAB/Q9qwBdYSf4jm38igZq3q1wPaeM5yeCEZ5mPWt+9nLwpMG7S1wzEbe95E1nSccgC1xbymdEPIKE+4+RowywAnhm9jeF8IMFxPJi5AcU9v1SJ/X/COvZ73Yk4mdrsiTYemeEEqyFsowkC9VxQmTMTMxuoD2w7o5ZdDYI6yAZ3QomongWqBb+m7hWOijHO7s17B+03+vMZYOAxB85THntfko4CcmR76S0gCkfzb9yUk1virsIVDlmMAKC4DvhJ8YjJyGflPHI2Nwj+c7cllXzGX/0+LrQAvQKb1XuB/buABUe0R0CJuw4glCTHhh5aODMEv7of9PUz9T01lgUrpOJEszhAraUlYRVmdf5OoJR4TOlE+66AYnKu5BD1VlXeYIq+6i8G9CyJR0LZSXgVzins1leT6vRyX7z5KN/i8WlQ0b8KBJ0YfQlgGbLVsGbLZsGbDZUvQG/AOg9RfBbO4nBQAAAABJRU5ErkJggg==\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_38\">\n",
       "    <path d=\"M 404.420339 54.488136 \n",
       "L 404.420339 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_39\">\n",
       "    <path d=\"M 451.708475 54.488136 \n",
       "L 451.708475 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_40\">\n",
       "    <path d=\"M 404.420339 54.488136 \n",
       "L 451.708475 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_41\">\n",
       "    <path d=\"M 404.420339 7.2 \n",
       "L 451.708475 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_9\">\n",
       "   <g id=\"patch_42\">\n",
       "    <path d=\"M 461.166102 54.488136 \n",
       "L 508.454237 54.488136 \n",
       "L 508.454237 7.2 \n",
       "L 461.166102 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pb3049e2ff0)\">\n",
       "    <image height=\"48\" id=\"image74ed9948ab\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"461.166102\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABH5JREFUaIHtme9rlWUYxz/Hk7HUYzbMRmnOrdWYoWtFkzBc2igTGkX0C+mNQSG97g+JXga9CSR70YuIZURgCTaI1ZaIspKWNjbXzLLW8Zy29eL6Xs9973EentMCOXu6YHy/9/38OteP+7qv615hDSzQwLLqRv+A5UrDK3BTvQ8Uhav1B9CUurYq4nPCKlCOeIzxffVKPjxQBEriW4Q9wGPijwtvu09kK8G8pw3OTMHnmhoSnhVOA1fE3UtZPdLwHihkSaMloFPcrX0QaD2gwRvCJ9tEBoC/xd83+OQivG30p48Nj+qOL4HvxWeEZRavketJw3ug5hrwTFLCwhrgIWHrPcBeDXr8iXVCtyfAZoNHLlqwA3cr4J/+wrACzOtuj/3LS8zVrYDLzYRFfLtPthDy53fC6VHD8dHwVX+gmbBSWwzuVR7uqMIFXYpDKMuCXtkh5DIHzIo7UiGo75b1/DgI/CjeIewluNHv1/MlYI2m1gqbMM9D7cWcDw+UgUnxc8JHLxBMo5imSzgMC9qlChOamwDuEJcH5q6G93ucu0XjUiVdlmRWwB8okyQQvhXunoD2EQ32CJ8RlqDgi9fD5c7oxX8aXNbwN0C6JDaZJ5vkJ4TcA16/HAMOf6iBe2BHs+GLm6FXKVW1EFPAWPRCQljOAL+Le5KocG1YLRVC+fDAPMEy54VDQMcl4/0qd9iviY1vwrbDxrcdN1w4Au/qPgX6lIbT2DqAsHmVCeug1nrIhwdgcUYCs5qvh/6TIp6V9jUBr2lwyKCwD/a8avwdg4pKplmSxJS8f55sPUFmBdLtY4mwsSYX/ev8QKhuVMxxANr3Gx0YBKBHig8T9hd/VVbJRwitJtQovj91YuUNADuFfhPHCUnSpZekGD9kHtikkBs4Ehaxh1KVEEJpjGVleyA+QrlV3Jv6+4FO7VtJQ+PmGB2F09rIPO92fwD9qi83qq543Qql7TPw/KeLvz1EsHg6ncaeqKlAXFitF/e6rQ1C8eZa+WbxDfCe0b++NrylGThYscErqvDadf9L8KA2hSsKq7jA8/qosoQCKzuEXIoETeM0mnQhjm6aSeCM0RN+6RL0v6X3ebp9TriFpJ7qU+00UQ3tZfrMKG5w8uGBOYLWboXZeOCyQdgF7DK68zPDMUJF2+JNhZ/ktWFNv3Ng61m4S1PjQn++yLWVasNKTQ942qoSNhi3wjmg22t9bxs9nT5Bkpk2PSA8RTCbH+C5xyB4U6kmXndFri+ZW0oVyslhwzDQ9ovx7kFNekh0AX07jPd54zgJf+jXpeNxJPqASqjz0ZQbL387sUuVkMrGU/MAZeXKXW7Rq8DLpzR4Qbgd1nnrrlX860eGY9gJL/CVXjpC8Lb70L+3ojayTMfrsXi9vpZQmfqa3C18Fmh9WIOnhD2EDc/deMxg4Sj4+YAaUEaAn8XT7WbsgboViMWV8SNA/33NhJrJj4M2ELKJh+N0hL7rerjMsnTIpCV/IbQcSefzf/ufyVga3gN1/594OfJfWDwtDe+B/xW40dLwCvwDJzksOs8xGhsAAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_43\">\n",
       "    <path d=\"M 461.166102 54.488136 \n",
       "L 461.166102 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_44\">\n",
       "    <path d=\"M 508.454237 54.488136 \n",
       "L 508.454237 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_45\">\n",
       "    <path d=\"M 461.166102 54.488136 \n",
       "L 508.454237 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_46\">\n",
       "    <path d=\"M 461.166102 7.2 \n",
       "L 508.454237 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_10\">\n",
       "   <g id=\"patch_47\">\n",
       "    <path d=\"M 517.911864 54.488136 \n",
       "L 565.2 54.488136 \n",
       "L 565.2 7.2 \n",
       "L 517.911864 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p6d0a513e54)\">\n",
       "    <image height=\"48\" id=\"imagecf3f1d91f4\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"517.911864\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAABDZJREFUaIHtmV9o1WUYxz/u6NRzPLo5pOnYBg7ZYSqtGUjmEGugdVFCSoRESrdhd1EIdReEd+KVBEoEQTm98c+NIEJUClldNAxtrD9KJuaWetocZ3XxfJ/zvv02jj8zOOycPTC+z/t73997fs/7fN/ned5387LwN7NYGqr9AY8q89MOzCTai4CF0nPCfNTnUhKOR88mE8/GgYnEsxLpJJUBGWCB9KxwBdAlfZ1wjbCV4NpR4Vj0cbeEvwpHgOuJviLB0ErG1A+FXJxKjQTKrBKuF/YAGfHrL3HjJuYFgGvRHGCeKUq/J5wgrPycB0oES+ONF/M7lswyoN30xXqh4zr8qWW+r3G+n2ZaxbQrWx8eAJgSemQYBX6TPiz8Ubj+DtCkhi9zDpZqQNNdQ49sUwSeTyXwQfLQm9h/qIhtTIArwhXCwhQUnCfdwpYwx/LvDD1fNDB9w5ZIZ0T9UCgpJULocyoNCS8BBc9SW4TdlDnTLCrlRaVGwmqnzcAu9eGBDMFSTz4LCTWQc9lD7DBwW7VBs0/SR9gk2jQtXxo+yiqmMqCB8LEeXB4jZOCWRF8TITc0e5XWgxkBcNWgUwYs4r8bUdsU8ronR/C+R8WN+oNQhbqXAHJLpPgSrcwCL5q+8xMAOg5ZMz82vVwvkW5D17YHPFPmgdXSnxHuBRpfUKMvGggWX72s7PHZCsBrpvYq8A6cA6B9MCTsTISe9StJbXrAV8E90ETwwICwcTfwihqtwpi0Hlt987CWsGv2G7xsHugbhLOJ14rRd1TaC6kolCWEzC739SaCVT8JLwkno77NPtt49HPPGuyyrNK76j6rlTcua4SX6g+S2qRQUjKEDPyvTLZU+g/CgwbXbkCbL81O4bufwVovjF4X7taYI/TpXXfiTcLq1u+RMj7EeFQsk3MCWCZdG7V0w/BjYFQv939q+PwIcPwNa7T5ZHLnU7BRHjitnmFCtVspnM5ogLvMX7xHuLf5WbN2XAY8D2w1yLxk2D0Ix9R1XJi/CP3vqfHhPilPlu1oU3Bo1fxZpmfnmaS2KeSnwlHs9gzgvPDVk8A2NZ5WzPzATsc7itByxh5diOYoN06JX70XDX+h7HaP0vH1ZKV8UNse8E08hi0SgEp4er6BDYe9oXuJrucMT5+n/6iRuf9YNIknYl/eEeEQ3Na5wY8PaW8latsD8dW4ImQ50WSB3EemF5y4B0T8Je/Ank7T93iWuwroFM/3Bl/9bngl3C15lI6v4yvJvLT/ofGN5N/aDjwu3ZPt9iekvA9sV2zlTWEn8LX0twwO/GH4NhwSZzwPDBGMqZQHZj2FUnvAJS61vSzyStU9MgDsaIgaYNXpHemfG3yrKvYE8IW6nEq3qJMDzUN7YCbxc4NXrFlCpFwQjZtMYHxVnyxf0sr/YkA1ZdZTaM6AasucAdWWOQOqLbPegH8AVpnwA2/dDAQAAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_48\">\n",
       "    <path d=\"M 517.911864 54.488136 \n",
       "L 517.911864 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_49\">\n",
       "    <path d=\"M 565.2 54.488136 \n",
       "L 565.2 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_50\">\n",
       "    <path d=\"M 517.911864 54.488136 \n",
       "L 565.2 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_51\">\n",
       "    <path d=\"M 517.911864 7.2 \n",
       "L 565.2 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       " </g>\n",
       " <defs>\n",
       "  <clipPath id=\"pf389c7207b\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"7.2\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p167dc499a9\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"63.945763\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pccdec28207\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"120.691525\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p25fb736eb3\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"177.437288\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p91ca5363aa\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"234.183051\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p67910d7cfe\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"290.928814\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p27b4ef7f5a\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"347.674576\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pb2351571aa\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"404.420339\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pb3049e2ff0\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"461.166102\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p6d0a513e54\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"517.911864\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       " </defs>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<Figure size 720x720 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class probabilities tensor([0.0987, 0.1124, 0.0993, 0.1022, 0.0974, 0.0904, 0.0986, 0.1044, 0.0975,\n",
      "        0.0992])\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "fig, figarr = plt.subplots(1, 10, figsize=(10, 10))\n",
    "for i in range(10):\n",
    "    figarr[i].imshow(xcount[:, i].reshape((28, 28)).numpy(), cmap='hot')\n",
    "    figarr[i].axes.get_xaxis().set_visible(False)\n",
    "    figarr[i].axes.get_yaxis().set_visible(False)\n",
    "\n",
    "plt.show()\n",
    "print('Class probabilities', py)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can compute the likelihoods of an image, given the model. This is statistician speak for $p(x | y)$, i.e. how likely it is to see a particular image under certain conditions (such as the label). Our Naive Bayes model which assumed that all pixels are independent tells us that\n",
    "\n",
    "$$p(\\mathbf{x} | y) = \\prod_{i} p(x_i | y)$$\n",
    "\n",
    "Using Bayes' rule, we can thus compute $p(y | \\mathbf{x})$ via\n",
    "\n",
    "$$p(y | \\mathbf{x}) = \\frac{p(\\mathbf{x} | y) p(y)}{\\sum_{y'} p(\\mathbf{x} | y')}$$\n",
    "\n",
    "Let's try this ..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unnormalized Probabilities tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n",
      "Normalized Probabilities tensor([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])\n"
     ]
    }
   ],
   "source": [
    "# Get the first test item\n",
    "data, label = mnist_test[0]\n",
    "data = data.reshape((784,1))\n",
    "\n",
    "# Compute the per pixel conditional probabilities\n",
    "xprob = (px * data + (1-px) * (1-data))\n",
    "# Take the product\n",
    "xprob = xprob.prod(0) * py\n",
    "print('Unnormalized Probabilities', xprob)\n",
    "# Normalize\n",
    "xprob = xprob / xprob.sum()\n",
    "print('Normalized Probabilities', xprob)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This went horribly wrong! To find out why, let's look at the per pixel probabilities. They're typically numbers between $0.001$ and $1$. We are multiplying $784$ of them. At this point it is worth mentioning that we are calculating these numbers on a computer, hence with a fixed range for the exponent. What happens is that we experience *numerical underflow*, i.e. multiplying all the small numbers leads to something even smaller until it is rounded down to zero. At that point we get division by zero with `nan` as a result.\n",
    "\n",
    "To fix this we use the fact that $\\log a b = \\log a + \\log b$, i.e. we switch to summing logarithms. This will get us unnormalized probabilities in log-space. To normalize terms we use the fact that\n",
    "\n",
    "$$\\frac{\\exp(a)}{\\exp(a) + \\exp(b)} = \\frac{\\exp(a + c)}{\\exp(a + c) + \\exp(b + c)}$$\n",
    "\n",
    "In particular, we can pick $c = -\\max(a,b)$, which ensures that at least one of the terms in the denominator is $1$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
       "<svg height=\"180.738556pt\" version=\"1.1\" viewBox=\"0 0 582.745032 180.738556\" width=\"582.745032pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       " <defs>\n",
       "  <style type=\"text/css\">\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\n",
       "  </style>\n",
       " </defs>\n",
       " <g id=\"figure_1\">\n",
       "  <g id=\"patch_1\">\n",
       "   <path d=\"M 0 180.738556 \n",
       "L 582.745032 180.738556 \n",
       "L 582.745032 0 \n",
       "L 0 0 \n",
       "z\n",
       "\" style=\"fill:none;\"/>\n",
       "  </g>\n",
       "  <g id=\"axes_1\">\n",
       "   <g id=\"patch_2\">\n",
       "    <path d=\"M 10.7 54.488136 \n",
       "L 57.988136 54.488136 \n",
       "L 57.988136 7.2 \n",
       "L 10.7 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p473672dd43)\">\n",
       "    <image height=\"48\" id=\"image2b61d8aa19\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"10.7\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAi5JREFUaIHtmD1oFFEUhb8nbhPBSnBBbCxsJCQI/rBgEVDUUiEGJIqghdFKFH/Af0xlggYCKbRwMYVbKBaCYEAM4g/RRtBGCIIgghYqMqQI8izmvDVC1Le7bxzHfQce5w5vOHfO3HuHmTEdYCkwFuR9Aa0iiIFkq5ad1eqhC+gKIf4HLMxG9h6P7VEAjphLAIxlk6j4LWRCDPE1ca99pqi7vjdqSgAcazXJL1D4CgSZgT3i3oE1aTA2G0LWC4WvQJAZcNgmHrcXqHd9JZ2BxU/gW6hEcxDUgMM+YMT+3EavTIm1oRPxH7RQJgbGAVinlWKVPUQ/0B84V+ErkMkMAKwWP7QnFJ2HB+lAL+oJlyczAw6PxN32E/ASgKrZAMCBAPqxhXyR7ABqerR+UCstbV03VsAXZWDaVnRUA+C6WQ7A/hZ0YwUaQeJutXtbnUlnodwBX5vU/KsGroh32veKlgBwy5TY1aRmbKFmkOxWUHVvrJOcMRsBGGpQK1agGbiH6YS9oaiPd8YAsLJBrVwMOLwWL7MzwHYAKuYuAC88NWILzUWn+CxwXPHFec77KL4qvm/vAJvTgxV6T3rjl7N9KnBbvElf5k+nYL37Sj8n3nJZwUFgWPHhedQ+i2+K9/7YOqkKDPpcVTtVILGnFJ3+zVnPxX2NX8nUWwBG9R/A91+qt4FpcfmLggnq01gbSHlSW1XP5CHQPi30r6LwFYgG8kY0kDeigbwRDeSNaCBvfAfij3q8yx6zRAAAAABJRU5ErkJggg==\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_3\">\n",
       "    <path d=\"M 10.7 54.488136 \n",
       "L 10.7 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_4\">\n",
       "    <path d=\"M 57.988136 54.488136 \n",
       "L 57.988136 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_5\">\n",
       "    <path d=\"M 10.7 54.488136 \n",
       "L 57.988136 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_6\">\n",
       "    <path d=\"M 10.7 7.2 \n",
       "L 57.988136 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_2\">\n",
       "   <g id=\"patch_7\">\n",
       "    <path d=\"M 67.445763 54.488136 \n",
       "L 114.733898 54.488136 \n",
       "L 114.733898 7.2 \n",
       "L 67.445763 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p1b54e45d93)\">\n",
       "    <image height=\"48\" id=\"image22046185d3\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"67.445763\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAmJJREFUaIHtmD1oFEEUx38rWqwXwULQwogWOQOnjTYWEtROkiCCihpQsRE0jY1BDAERBetEe0lAAlE05wc2il8kiBYHFoqgYtBGQUEGLYSxmLfZu81uuJ3dsCy7Pzj+bz52Z969Nzuz66wETY5ZlvUEklI6kDWlA1lTOpA1uXdgeZKL1W4xVoU0nhXd9Wdh27hrdMqvGpo2OhZzDo7tTqzeArWQyVnzS/SvXzW7yehQa88bz+C02LlPIfsI6DlgTbyLXkrqPJHyTtGwNFuMfS4VSbncRyDRIg4y7Jh/+EVE+zvR36Le2u/Gne+zRXTsWsgNZHl0TftVqaZQvzjw2OaGluQ+hewdGOxcUFVvmN/GBBOKS+4jYL0GtgHPdVVKjdbGEZfKpWQTa5fiRgDgjWi3nhNLnkr/XGorjPnZemrtkcgBD6U3iPXerxwxj9SlTqVip5DHHtG69s7HvcBdAE45hwGYSDpIBGUEmlHeEqh+ANYb+5ZZC7UDS7OgU3XAQw0AE4Ej8hWXyoW0RypTKJxZYKv+JKV1opPccU4AMJDiWGUEolA9YjxtjsRmALqcLwB8S2Gc4kZgP/BR7MYi/ZTeK9bt+boH8uZ20GbgALHfiV+J1vRP4BgA/U4diHiV7Hto9N4PYn/FaIPipdBV0UH9HeiQ0iEAjkskXuPvuqtFv+oe4JEpDMtJ9bLFjAMULwIeagbYEfVF7SRcvGnMI1JVberbJxG4bzNyK4n2ATUjRqQjQc4BcNQZBbwDdzKKm0LNKO8j7VrR88D2wG2vO+gzxuwgPcoIZE3uI1A6kDW5d+A/AziD1kg5tPUAAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_8\">\n",
       "    <path d=\"M 67.445763 54.488136 \n",
       "L 67.445763 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_9\">\n",
       "    <path d=\"M 114.733898 54.488136 \n",
       "L 114.733898 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_10\">\n",
       "    <path d=\"M 67.445763 54.488136 \n",
       "L 114.733898 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_11\">\n",
       "    <path d=\"M 67.445763 7.2 \n",
       "L 114.733898 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_3\">\n",
       "   <g id=\"patch_12\">\n",
       "    <path d=\"M 124.191525 54.488136 \n",
       "L 171.479661 54.488136 \n",
       "L 171.479661 7.2 \n",
       "L 124.191525 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p9f277a5131)\">\n",
       "    <image height=\"48\" id=\"imagea9b0ebcb0f\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"124.191525\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAbdJREFUaIHtmL8vBFEQxz9PXGNdIQriQlQSPzqJRKWg0RFRKU6hUPkHRIL4BxQIDQWdoOKaa2m04kQkIjoJhWwitljFmxMR53Ju1uYl75NM3mwzc998Z+d21zRBjMM0pP0D6sULSBsvIG28AICsRBh32biBDmwkjfMONGoUyX5mo/bo2eF2PANAcKbRoTJG8584XJJkNQJGAGg15wC8aTX5hvMjpOrAnpzT8QvQDEDB2FGa0mryDecdUBUwKwEHmmV/RXWEyoRbwHxkL1ZkGy1rd7H4EfqR4y/5gERCOO9AIvfACHAa78tVEYDA7Gq3AbwDlQkvJRm02+jeZOhPoE9yAiYlOZLyRUMwpt/Hj1AlNuXMxwXJVumWJ9MnxT7egWqEi5KsRVzJk+mQYv3kBWQkeY+ANgAC86xW3/kRSlxAPrJhmUL71cY7UI1DCRgEckCOTqBTqb7zDiS+hcrcAe2xvRlOZJ3OKNT9Nwe2ASgBJSY2YGJDp64foVoIFyRZvwAgMMN11/QO1MKjnC3xKwAPxn4W7q2j5r8KmJNzXbYRffLN6PrvNf0IpY3zDngBaeMFpI3zAj4AUe9Z6jOJZBIAAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_13\">\n",
       "    <path d=\"M 124.191525 54.488136 \n",
       "L 124.191525 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_14\">\n",
       "    <path d=\"M 171.479661 54.488136 \n",
       "L 171.479661 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_15\">\n",
       "    <path d=\"M 124.191525 54.488136 \n",
       "L 171.479661 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_16\">\n",
       "    <path d=\"M 124.191525 7.2 \n",
       "L 171.479661 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_4\">\n",
       "   <g id=\"patch_17\">\n",
       "    <path d=\"M 180.937288 54.488136 \n",
       "L 228.225424 54.488136 \n",
       "L 228.225424 7.2 \n",
       "L 180.937288 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p081378e6ee)\">\n",
       "    <image height=\"48\" id=\"image0809e16e08\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"180.937288\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAApJJREFUaIHtmD1oFFEQx3/rZ86trkkhFjYp/EARDLG0sjVGq6jgR+BQ1CYiGEEtNILBgBKsUihebAQhhZUabATDYWEwp4KNhYLVFXIkgvIs3uztu7vN3du9lWXZ/cMx897bN2/mZvbNzDpbQJFirEtagV6RG5A0cgOSRuoN2BCHkNdCD3wUZlcNlooAvN2rp9YDD2R5Po5DBan3gBM1kT0BRm7K4MaKMKsddvTBQAEA92uUE4MR2oAjQstqFjjqKwd0NYA5zf4ZA6C0UQ8XgB9hlDCQvRCq7xemUjNmbT2wxvp0EXc8jBY+MugBdVG4u425ilNoemZQzQBnW3Z28ADgtsiwRQQDzgk3aRxe7L7vJ9B/VUZX2h/4rmW428Jok80QiuYBgPptYSZqAas6JJ85dwA4ZalP7gGw98CQ0EtCh9Uj4Q7jX8U62Y06Y1Y1UwY9cE2YW34c23qgTdYOYao1WpNhySlStpAR2oDTQmfUSmMu6h1+TOhjtQf4ICPJFS8LuIe6y0h9CPXQ0PhZta52AjDqVAH7huVvk6xVg4eSxb8P2faAifcAPP2t34WDm6FisavsvcQsRj45tAG/Gtw8+v42sEnfTG/UJFyeAmDgnl4yGxavKaI6a8x+1mRwX0O6DVIfQpF74jlgWHnV5XWhAeXytM4Ry+PwRaZGjgtTNmqi7VKNfgunR3Y9AFLjA/R7Ijq1lC/wk9VE22rUZJhtD3ioK8vvQm3ruqK970wF+MQO8RiwW5glT2pQw9IH7yRMzmjy/JOmJ3s4Ow8hE17DsqC2Asstq//n02LqPRCrAYvyu+BE/dIZHjEVc814BfBQurTz3g01xIkYQ8dD6kMo1pc4CaTeA7kBSSM3IGmk3oB/+cWaIGunC1sAAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_18\">\n",
       "    <path d=\"M 180.937288 54.488136 \n",
       "L 180.937288 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_19\">\n",
       "    <path d=\"M 228.225424 54.488136 \n",
       "L 228.225424 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_20\">\n",
       "    <path d=\"M 180.937288 54.488136 \n",
       "L 228.225424 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_21\">\n",
       "    <path d=\"M 180.937288 7.2 \n",
       "L 228.225424 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_5\">\n",
       "   <g id=\"patch_22\">\n",
       "    <path d=\"M 237.683051 54.488136 \n",
       "L 284.971186 54.488136 \n",
       "L 284.971186 7.2 \n",
       "L 237.683051 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pa41f52da23)\">\n",
       "    <image height=\"48\" id=\"image3d9638e11b\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"237.683051\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAltJREFUaIHtmL9rFEEUxz8j/iAuB6IoVwjqiSCIxOo4IiQSCIIoItoIQfIHBBHBdCJaCLEICMZUFkJ6EY0GxEqNHlZWNkYNWoSINseQFIdjMW9OL15kZzfuMtx+Yfm+2Zv9zrz9vp3bWbUVDAFjQ94TSIsigbwRfAIbsxxML1ie3WP57DpoBu+AynIZ1WZaom2WjpwEIHqXXLNwwAf6ogS3GxJ8BiBShxNrZvoQ8231ib2pJYMvoWwdaN2u9Rs2eAeyTeCnHDTbjrEUkqm8vC48/I8++/9snO/c51aKOQRfQt4OjAqP14Hqe2ntXrO/5qFETeB0xz5lYNF3IoLgHfD+J9avJag1gF4AltTHNfvvuiDBMDC0XRoL7Z0qJaJPPrP4je5xoCw8b6oS7aBPPQUg7stkn/Azs9z+w4Eeog8xRVYh9kNcaUXPZRal2BN3mHPBmx7LNXmpuwcMeIoJgi+h2A58b0WTloYaQCnZqG5fUxPuPwM8SCQVvAPpltGKdcB3CTwnfL+1xTzOrNoJ+G/0vROYFy6bt8BNACKVzH59VYIby9C0D3Z5kz3V6HzJX+i+EnLQL4Gjtnbuqn0AXPHU6BWeMwZYAWBQWSfqMTW614Ex4Jp5LK0ZAA6pKcB9a4gPbTbjFupBZReGwoE4mBE+ZmTNGJVlddJPR1eButXwdSBVApHwknGvyRP2vBrx0tFbgJVTABxUjwD4EvPa4Eso1aZeu+DED8tPEgqNA6/87rxDdzvgMGH3NVzma6LrX1yCOwnHzvTr9P9A8CVUJJA3igTyRpFA3gg+gV/FSH8hnzuZAgAAAABJRU5ErkJggg==\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_23\">\n",
       "    <path d=\"M 237.683051 54.488136 \n",
       "L 237.683051 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_24\">\n",
       "    <path d=\"M 284.971186 54.488136 \n",
       "L 284.971186 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_25\">\n",
       "    <path d=\"M 237.683051 54.488136 \n",
       "L 284.971186 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_26\">\n",
       "    <path d=\"M 237.683051 7.2 \n",
       "L 284.971186 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_6\">\n",
       "   <g id=\"patch_27\">\n",
       "    <path d=\"M 294.428814 54.488136 \n",
       "L 341.716949 54.488136 \n",
       "L 341.716949 7.2 \n",
       "L 294.428814 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pc83c63004b)\">\n",
       "    <image height=\"48\" id=\"image82d9b5b55e\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"294.428814\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAdtJREFUaIHtl88rRFEUxz9XFvKisPFjQfmxsVAWNjYzxcZCIsuxFcrOPyAbWSlJtnYozcZCKaUUFmwslIUIs1R6sdG1eOflvTFjjLnP6+l+6nXO9Kbzne+cc96dUbWgSTBVcX+ASrEG4sYaCDIkl7sNbpd3RU3iO1BtokiNxOyuJBMaapSXj5pQKE7iO6BMHGR1EnN6UrJtoA0ARz1WWv5bjBjwca8l6dHAIADN6gSAF1MiedgRCuK2S3KrgSwAKTUGwLkpkTxsB4LcSWzSgZLT3uPU2TSlEsaogRGJO/qVz9NhHABH7ZmSCWFHqBDuATDslz0CYF2lWTAthO1AYS6AHp1XdkvhTJlW+gcdiMTABQBvcgmZpSikohkhkEWG0DJPqjQA+wZ1Ej9C0XWgT5LLQPkZOZU3zOnYDhTD/5IzocfpIQCOGjKmE5kBH1e3SvYA5ABYVi0ALBqob0eoFO68JKsBmSdZ5tav7y8X24FSrEicDS3zMwCOaqi4vu1AKRol3usB4DR071x5u5CqoH7kBnyugI78n9hHnoH6NLz/sq4doZ/SDxzrNXk1F7rXqZQcceVjO1AOZxJ7/V3o9nag6Sb016cs/tRAFCR+hKyBuLEG4sYaiJvEG/gAHdVqAnuawe4AAAAASUVORK5CYII=\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_28\">\n",
       "    <path d=\"M 294.428814 54.488136 \n",
       "L 294.428814 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_29\">\n",
       "    <path d=\"M 341.716949 54.488136 \n",
       "L 341.716949 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_30\">\n",
       "    <path d=\"M 294.428814 54.488136 \n",
       "L 341.716949 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_31\">\n",
       "    <path d=\"M 294.428814 7.2 \n",
       "L 341.716949 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_7\">\n",
       "   <g id=\"patch_32\">\n",
       "    <path d=\"M 351.174576 54.488136 \n",
       "L 398.462712 54.488136 \n",
       "L 398.462712 7.2 \n",
       "L 351.174576 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pb00e2c8c5e)\">\n",
       "    <image height=\"48\" id=\"imaged4f546ae20\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"351.174576\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAoRJREFUaIHtlzFoFEEUhr+Vu5B1QZSgBLExjSIcgqISNQhRQRREBBWJIGqhRUBCIoigFgZtNDaKTcQDtYhahCCoiCLanCIWNlYxRaxtZDnMxYzFvDF35C7u7e3eMuz9MLx/dm/ezLv/7cwbZykoLMaSpBfQKFoBJI1WALWQl+bPSeuDnei2XFoUsF4BJ65t1Fd7hU2IzQCzmuZdAI6d0t3nDcxjvQKZps2UzzIj/3ib2grAWMcnALyD4d02L4B2WCG0y9ELz0Xg1voUiu8jXiNkuiRkDM85Efk81isQ2zfg/dDW57E82cw1YZcjnCe2FDLwnwg5UoI3WQC8PdH5tz6FYldgSuwqVQI+AzDidAPRpJL1CsR+kK0V649n4VARgE0R+rdegdi/AYPjwKgyh9puAHqd9wB8bMBv3Slk6pcrwP5B6dycP20BGFp44l69Bf/KaV4B8HZCl9WNFHPpSaHrYs+rO8LOlL01Qs5SG5kq7y8BcNa5zaMgi6iC9Cjgm3vfgWLZU0+bb3MAfNhQe3zPOeDeaulNVr4suHjdQVaxEOEDmHLp7NL0V8DJOsVOmuwbfSlkF57jBvRSiRSl0Ash+8zPt7FerobTISevuPQ8lUr1aH0+0qPAdrGv7ws5XYR2OYh+h5t8QOywygN9APxxtBLLAvpIjwIGZt/oUfPbaa/sIGFrmgFg2NRJX7UCuY3wPcDYugPYIvZdCchIECOSSoNVhwSCf1HIDfHZ4eL9/P+49KWQQQ4oqHHp7dCmsBIg1Km6TuwXdUHYYfrl6vlgkXHpVQDKtlbVpkn/DAAn78KzkD6NEg8x157FS5Wm3cjigvUp1AogabQCSBqtAJKG9QH8BdPcj0FmvsU6AAAAAElFTkSuQmCC\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_33\">\n",
       "    <path d=\"M 351.174576 54.488136 \n",
       "L 351.174576 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_34\">\n",
       "    <path d=\"M 398.462712 54.488136 \n",
       "L 398.462712 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_35\">\n",
       "    <path d=\"M 351.174576 54.488136 \n",
       "L 398.462712 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_36\">\n",
       "    <path d=\"M 351.174576 7.2 \n",
       "L 398.462712 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_8\">\n",
       "   <g id=\"patch_37\">\n",
       "    <path d=\"M 407.920339 54.488136 \n",
       "L 455.208475 54.488136 \n",
       "L 455.208475 7.2 \n",
       "L 407.920339 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#p02e9223300)\">\n",
       "    <image height=\"48\" id=\"imagec9e179aba9\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"407.920339\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAnhJREFUaIHtmL9rFEEUxz8rnsYkJEXwCNgIIWAIKKnE00D8USWihYWdnQpKCJIgaiGHJP9AQJtUwR+FWghWEkVBPBGMnIVnFQipFAmGhPWKHI7FvNlslgvZX7BZd79wvO/OvtmZN98383bPagVFirEr6QlERR5A3OiVn63KzAPz2/jvuACCYnfSE/CiumbYBWYpb+ufKxAXzhvSvq7tmwLTPvrlCsSBo8ATNbqpbfKMv77WTqjE9jGgIqlTLQDQMwA/fPTNUygK7hpS+Q40ABgb0E1+Vh/+AwUS2QMFsStvhQzV4eI+ANqeBntWIim0ZMhQXch9SgEnbpD6FIpFgZdiT5lVrEF/WdNFl1+32I6a9wETfA05drYVcFZevRd2QmyDby16qx68pVt+AQvX5XafFC2mALh6LvwcUq9A6GP0CFBRr+XquFgjaGPDcVUfj9c64YG6LI3ynjkjR+eVMDPQCB3AEtClzDGoc2DCmgPgJlB0zvjfQj4Bp4W/AuC2dRbA12vzVshuCtk1oE8UeCipcKmJn3oubAQnxcb0Bm+LsvSC7Crg3gMLllbgcBM/+6eQYp2NTb4XgH7rL7C52AVF6DqwDHRJ9x7VqhutPwDsBxbbxbF4wzWUGe4QAJ14S3JwpD6FQitwD3jEZ7laBsBWUlJX56Cj7unRAB4DMGzplQ/7/uNG6hWI9EFjTwm5Y1a7SSV28AFK+q+GAx91y0rYgV3ItgLDYp+pF8JGxLoUeKeP2NLJeHLei1i+ic3bzh41KWzcuTcoNeJL1EG2QLZTyItesdVpYFQXt24pbmvNu0RGrkDSSL0CeQBJIw8gaeQBJI08gKTxD5lrhmY628adAAAAAElFTkSuQmCC\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_38\">\n",
       "    <path d=\"M 407.920339 54.488136 \n",
       "L 407.920339 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_39\">\n",
       "    <path d=\"M 455.208475 54.488136 \n",
       "L 455.208475 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_40\">\n",
       "    <path d=\"M 407.920339 54.488136 \n",
       "L 455.208475 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_41\">\n",
       "    <path d=\"M 407.920339 7.2 \n",
       "L 455.208475 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_9\">\n",
       "   <g id=\"patch_42\">\n",
       "    <path d=\"M 464.666102 54.488136 \n",
       "L 511.954237 54.488136 \n",
       "L 511.954237 7.2 \n",
       "L 464.666102 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#pf131eb3856)\">\n",
       "    <image height=\"48\" id=\"imagef683aee915\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"464.666102\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAnhJREFUaIHtmE1o1GAQhp9oKa5B0IOgqFCQipQKogdFSvGgBRHUg6LIotBD1RVR14vooYsiRdBKBRX/QIXSS0W9KBUPVdiLnkRLFfTkD9JTsS2VKsTDzNp0TbfZ/Bhi8kJ4Z75vNpnJO1+S/Yy5YBFjzIo6Ab9IC4gaaQFRIy1gJozqMXYZNiBHkIi9AkYYL7ImoO+zOkvuqLEbOCNmtgMAs9v/tQItYJHyx+dA83iFyFGhwYUArGyATx6vmbaQHWeV85bD3Z/IQO2IOjVT57oymMe8XTP2CtTMHOIe+Ra7Nyx0czEAXW1w9Ok8GdtcplALnuGrhR4qa1qst1ao9bq6Ew1mMBu85ZCMFprD5ALNWUfUmg/kbRFe8EvotMef8x8o4GoNjJ0EOiq9mKrFfaFiFgCzyfuZEqKAZQE/HGZ0rHMBABMnxK3dAkNPxL5kiz6ufFj5cbXZOsBlAb3AVvX0K21vPRd6xGwPIBGvSEgLXQFyuogHMgCYjWGm5R7JUOA7MPvPF+Z5AHYZhUAWoV+4KqAOGDiozrVSIY9YY+wB4H0oqblDMloI5MsH4MsHNZaPwwFZ0PU3ZOhrwMm5QXIUKGGZ8jurGegT2xAl1tridir3Km9n8s3700Oi0yH2ClT9l7K0/bHReEF/m9z54bKYq8B+6xkAd3mro41Q3CTmRaH+B8IF4FvZ+d0ilI2tbmCH085ERbQKveyZNsJc9/dY7FsoFAWywPWCOu1v1KjD7yaIqQ8LO1IF3KIIrL6tTushNTodInPKp4ClU2acFPhnBdixSnmbw5w+mHi1D4buiX1Lx845xKctFDVir0BaQNRIC4gasS/gN7L7hO2PRZ2JAAAAAElFTkSuQmCC\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_43\">\n",
       "    <path d=\"M 464.666102 54.488136 \n",
       "L 464.666102 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_44\">\n",
       "    <path d=\"M 511.954237 54.488136 \n",
       "L 511.954237 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_45\">\n",
       "    <path d=\"M 464.666102 54.488136 \n",
       "L 511.954237 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_46\">\n",
       "    <path d=\"M 464.666102 7.2 \n",
       "L 511.954237 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_10\">\n",
       "   <g id=\"patch_47\">\n",
       "    <path d=\"M 521.411864 54.488136 \n",
       "L 568.7 54.488136 \n",
       "L 568.7 7.2 \n",
       "L 521.411864 7.2 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g clip-path=\"url(#paa531159b7)\">\n",
       "    <image height=\"48\" id=\"imageda240b6a3b\" transform=\"scale(1 -1)translate(0 -48)\" width=\"48\" x=\"521.411864\" xlink:href=\"data:image/png;base64,\n",
       "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAspJREFUaIHtmF1IFFEUx3832rC2QNRACEMiYpMCH5QM6iF7iD6WHgIREoINE0lISvoAIV+CCPt46MtSosBIKMIsCCIJJCI2KRDDgiIoiIjKqEFBaXq4Z9zZzV3HnY1BZv4v///dM/ece/bcuR+jFoHJHMY8rwfgFvPddDYqRMSliBEFQPiNG6+zg6sEiJ9Lbo/cAqBa1dLvyrFzzPkppNy8xIa5VdS9ZENLiPBpF6OaBfxdgUHhiGm5mJyyPVQhAHZl69wh/F2BUuFh87yoBpt1m35GPQLga7ZBZoCrBCysEB4yP4sqShiv6qkU3uc2yvTw9xRKhbFXROeE7dcRAPrUWmpzFciGoAJ2nBFuMJ8BFSnWV9xUlQDU5yogOU7AglEAfItLq9xmqQGgRN0F4HsOYgVTKB2MTSL6rR0gf8o2Jrt0Ee4RVGAmGPdFbLcvrS805a8HoPAnjGfp378VKAPizdI4W6D5rawrvUCh2GKrRAynd3YxROV+LV/PchyOEygWfmdFWD0ErJRGnvCkrcdv4cUOvI/D4BIAorJ9OL2S+mcKPRUuNwdEVQEntCxr07xDTI22jl+sx6PADWn0Cu+eJlIPAAdUHZ0OxuWfCjwWrjJfiloDdADQoZoAOJihfx6JAl3fIGLgpIjNJI4c8qXngaJYOvzK4NdxAkuFP9SI6BlLBOOOpjp9YI50w8cMvgwzCkCr6gNgC7DRnPjnuWrZsZ9n8OWfKZQKowuI3ZbWzmTjWAhOaVnaptl+JzZM/b+1qD8AtJvLSUzSbuEjVKuFQFCB9Dgm3NolImZfYi1c0PSk2Voh4dIPEeuEhwHLyaimkqOEP808Bn9XIBWHhY9fAerTvB/TYhSQ7y6X9W1tWeNULTLivx2n9whbN+PYIaC9TFpyeF7wHoCmCbiWZZxgCnmNOV+BIAGvESTgNYIEvEaQgNcIEvAafwErbZ85OmTwugAAAABJRU5ErkJggg==\" y=\"-6.488136\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_48\">\n",
       "    <path d=\"M 521.411864 54.488136 \n",
       "L 521.411864 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_49\">\n",
       "    <path d=\"M 568.7 54.488136 \n",
       "L 568.7 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_50\">\n",
       "    <path d=\"M 521.411864 54.488136 \n",
       "L 568.7 54.488136 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_51\">\n",
       "    <path d=\"M 521.411864 7.2 \n",
       "L 568.7 7.2 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_11\">\n",
       "   <g id=\"patch_52\">\n",
       "    <path d=\"M 10.7 156.860431 \n",
       "L 57.988136 156.860431 \n",
       "L 57.988136 82.733159 \n",
       "L 10.7 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_53\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 12.849461 156.860431 \n",
       "L 16.358784 156.860431 \n",
       "L 16.358784 156.860431 \n",
       "L 12.849461 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_54\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 17.236115 156.860431 \n",
       "L 20.745439 156.860431 \n",
       "L 20.745439 156.860431 \n",
       "L 17.236115 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_55\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 21.62277 156.860431 \n",
       "L 25.132093 156.860431 \n",
       "L 25.132093 156.860431 \n",
       "L 21.62277 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_56\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 26.009424 156.860431 \n",
       "L 29.518748 156.860431 \n",
       "L 29.518748 156.860431 \n",
       "L 26.009424 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_57\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 30.396079 156.860431 \n",
       "L 33.905402 156.860431 \n",
       "L 33.905402 156.860431 \n",
       "L 30.396079 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_58\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 34.782733 156.860431 \n",
       "L 38.292057 156.860431 \n",
       "L 38.292057 156.860431 \n",
       "L 34.782733 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_59\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 39.169388 156.860431 \n",
       "L 42.678711 156.860431 \n",
       "L 42.678711 156.860431 \n",
       "L 39.169388 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_60\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 43.556042 156.860431 \n",
       "L 47.065366 156.860431 \n",
       "L 47.065366 86.263029 \n",
       "L 43.556042 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_61\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 47.942697 156.860431 \n",
       "L 51.45202 156.860431 \n",
       "L 51.45202 156.860431 \n",
       "L 47.942697 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_62\">\n",
       "    <path clip-path=\"url(#p2998c20bd3)\" d=\"M 52.329351 156.860431 \n",
       "L 55.838675 156.860431 \n",
       "L 55.838675 156.860431 \n",
       "L 52.329351 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_1\">\n",
       "    <g id=\"xtick_1\">\n",
       "     <g id=\"line2d_1\">\n",
       "      <defs>\n",
       "       <path d=\"M 0 0 \n",
       "L 0 3.5 \n",
       "\" id=\"mda3492f907\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
       "      </defs>\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"14.604123\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_1\">\n",
       "      <!-- 0 -->\n",
       "      <defs>\n",
       "       <path d=\"M 31.78125 66.40625 \n",
       "Q 24.171875 66.40625 20.328125 58.90625 \n",
       "Q 16.5 51.421875 16.5 36.375 \n",
       "Q 16.5 21.390625 20.328125 13.890625 \n",
       "Q 24.171875 6.390625 31.78125 6.390625 \n",
       "Q 39.453125 6.390625 43.28125 13.890625 \n",
       "Q 47.125 21.390625 47.125 36.375 \n",
       "Q 47.125 51.421875 43.28125 58.90625 \n",
       "Q 39.453125 66.40625 31.78125 66.40625 \n",
       "z\n",
       "M 31.78125 74.21875 \n",
       "Q 44.046875 74.21875 50.515625 64.515625 \n",
       "Q 56.984375 54.828125 56.984375 36.375 \n",
       "Q 56.984375 17.96875 50.515625 8.265625 \n",
       "Q 44.046875 -1.421875 31.78125 -1.421875 \n",
       "Q 19.53125 -1.421875 13.0625 8.265625 \n",
       "Q 6.59375 17.96875 6.59375 36.375 \n",
       "Q 6.59375 54.828125 13.0625 64.515625 \n",
       "Q 19.53125 74.21875 31.78125 74.21875 \n",
       "z\n",
       "\" id=\"DejaVuSans-48\"/>\n",
       "      </defs>\n",
       "      <g transform=\"translate(11.422873 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_2\">\n",
       "     <g id=\"line2d_2\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.537395\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_2\">\n",
       "      <!-- 5 -->\n",
       "      <defs>\n",
       "       <path d=\"M 10.796875 72.90625 \n",
       "L 49.515625 72.90625 \n",
       "L 49.515625 64.59375 \n",
       "L 19.828125 64.59375 \n",
       "L 19.828125 46.734375 \n",
       "Q 21.96875 47.46875 24.109375 47.828125 \n",
       "Q 26.265625 48.1875 28.421875 48.1875 \n",
       "Q 40.625 48.1875 47.75 41.5 \n",
       "Q 54.890625 34.8125 54.890625 23.390625 \n",
       "Q 54.890625 11.625 47.5625 5.09375 \n",
       "Q 40.234375 -1.421875 26.90625 -1.421875 \n",
       "Q 22.3125 -1.421875 17.546875 -0.640625 \n",
       "Q 12.796875 0.140625 7.71875 1.703125 \n",
       "L 7.71875 11.625 \n",
       "Q 12.109375 9.234375 16.796875 8.0625 \n",
       "Q 21.484375 6.890625 26.703125 6.890625 \n",
       "Q 35.15625 6.890625 40.078125 11.328125 \n",
       "Q 45.015625 15.765625 45.015625 23.390625 \n",
       "Q 45.015625 31 40.078125 35.4375 \n",
       "Q 35.15625 39.890625 26.703125 39.890625 \n",
       "Q 22.75 39.890625 18.8125 39.015625 \n",
       "Q 14.890625 38.140625 10.796875 36.28125 \n",
       "z\n",
       "\" id=\"DejaVuSans-53\"/>\n",
       "      </defs>\n",
       "      <g transform=\"translate(33.356145 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_3\">\n",
       "     <g id=\"line2d_3\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"58.470668\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_3\">\n",
       "      <!-- 10 -->\n",
       "      <defs>\n",
       "       <path d=\"M 12.40625 8.296875 \n",
       "L 28.515625 8.296875 \n",
       "L 28.515625 63.921875 \n",
       "L 10.984375 60.40625 \n",
       "L 10.984375 69.390625 \n",
       "L 28.421875 72.90625 \n",
       "L 38.28125 72.90625 \n",
       "L 38.28125 8.296875 \n",
       "L 54.390625 8.296875 \n",
       "L 54.390625 0 \n",
       "L 12.40625 0 \n",
       "z\n",
       "\" id=\"DejaVuSans-49\"/>\n",
       "      </defs>\n",
       "      <g transform=\"translate(52.108168 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_63\">\n",
       "    <path d=\"M 10.7 156.860431 \n",
       "L 10.7 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_64\">\n",
       "    <path d=\"M 57.988136 156.860431 \n",
       "L 57.988136 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_65\">\n",
       "    <path d=\"M 10.7 156.860431 \n",
       "L 57.988136 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_66\">\n",
       "    <path d=\"M 10.7 82.733159 \n",
       "L 57.988136 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_12\">\n",
       "   <g id=\"patch_67\">\n",
       "    <path d=\"M 67.445763 156.860431 \n",
       "L 114.733898 156.860431 \n",
       "L 114.733898 82.733159 \n",
       "L 67.445763 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_68\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 69.595223 156.860431 \n",
       "L 73.104547 156.860431 \n",
       "L 73.104547 156.860431 \n",
       "L 69.595223 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_69\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 73.981878 156.860431 \n",
       "L 77.491202 156.860431 \n",
       "L 77.491202 156.860431 \n",
       "L 73.981878 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_70\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 78.368532 156.860431 \n",
       "L 81.877856 156.860431 \n",
       "L 81.877856 86.263029 \n",
       "L 78.368532 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_71\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 82.755187 156.860431 \n",
       "L 86.264511 156.860431 \n",
       "L 86.264511 156.860431 \n",
       "L 82.755187 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_72\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 87.141841 156.860431 \n",
       "L 90.651165 156.860431 \n",
       "L 90.651165 156.860431 \n",
       "L 87.141841 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_73\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 91.528496 156.860431 \n",
       "L 95.03782 156.860431 \n",
       "L 95.03782 156.860431 \n",
       "L 91.528496 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_74\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 95.91515 156.860431 \n",
       "L 99.424474 156.860431 \n",
       "L 99.424474 156.860431 \n",
       "L 95.91515 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_75\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 100.301805 156.860431 \n",
       "L 103.811129 156.860431 \n",
       "L 103.811129 156.860431 \n",
       "L 100.301805 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_76\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 104.688459 156.860431 \n",
       "L 108.197783 156.860431 \n",
       "L 108.197783 156.860431 \n",
       "L 104.688459 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_77\">\n",
       "    <path clip-path=\"url(#p7d6699d5ce)\" d=\"M 109.075114 156.860431 \n",
       "L 112.584438 156.860431 \n",
       "L 112.584438 156.860431 \n",
       "L 109.075114 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_2\">\n",
       "    <g id=\"xtick_4\">\n",
       "     <g id=\"line2d_4\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"71.349885\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_4\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(68.168635 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_5\">\n",
       "     <g id=\"line2d_5\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"93.283158\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_5\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(90.101908 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_6\">\n",
       "     <g id=\"line2d_6\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"115.21643\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_6\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(108.85393 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_78\">\n",
       "    <path d=\"M 67.445763 156.860431 \n",
       "L 67.445763 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_79\">\n",
       "    <path d=\"M 114.733898 156.860431 \n",
       "L 114.733898 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_80\">\n",
       "    <path d=\"M 67.445763 156.860431 \n",
       "L 114.733898 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_81\">\n",
       "    <path d=\"M 67.445763 82.733159 \n",
       "L 114.733898 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_13\">\n",
       "   <g id=\"patch_82\">\n",
       "    <path d=\"M 124.191525 156.860431 \n",
       "L 171.479661 156.860431 \n",
       "L 171.479661 82.733159 \n",
       "L 124.191525 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_83\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 126.340986 156.860431 \n",
       "L 129.85031 156.860431 \n",
       "L 129.85031 156.860431 \n",
       "L 126.340986 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_84\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 130.727641 156.860431 \n",
       "L 134.236964 156.860431 \n",
       "L 134.236964 86.263029 \n",
       "L 130.727641 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_85\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 135.114295 156.860431 \n",
       "L 138.623619 156.860431 \n",
       "L 138.623619 156.860431 \n",
       "L 135.114295 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_86\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 139.50095 156.860431 \n",
       "L 143.010273 156.860431 \n",
       "L 143.010273 156.860431 \n",
       "L 139.50095 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_87\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 143.887604 156.860431 \n",
       "L 147.396928 156.860431 \n",
       "L 147.396928 156.860431 \n",
       "L 143.887604 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_88\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 148.274259 156.860431 \n",
       "L 151.783582 156.860431 \n",
       "L 151.783582 156.860431 \n",
       "L 148.274259 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_89\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 152.660913 156.860431 \n",
       "L 156.170237 156.860431 \n",
       "L 156.170237 156.860431 \n",
       "L 152.660913 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_90\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 157.047568 156.860431 \n",
       "L 160.556891 156.860431 \n",
       "L 160.556891 156.860431 \n",
       "L 157.047568 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_91\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 161.434222 156.860431 \n",
       "L 164.943546 156.860431 \n",
       "L 164.943546 156.860431 \n",
       "L 161.434222 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_92\">\n",
       "    <path clip-path=\"url(#p5812111120)\" d=\"M 165.820877 156.860431 \n",
       "L 169.3302 156.860431 \n",
       "L 169.3302 156.860431 \n",
       "L 165.820877 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_3\">\n",
       "    <g id=\"xtick_7\">\n",
       "     <g id=\"line2d_7\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"128.095648\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_7\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(124.914398 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_8\">\n",
       "     <g id=\"line2d_8\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"150.02892\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_8\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(146.84767 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_9\">\n",
       "     <g id=\"line2d_9\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"171.962193\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_9\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(165.599693 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_93\">\n",
       "    <path d=\"M 124.191525 156.860431 \n",
       "L 124.191525 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_94\">\n",
       "    <path d=\"M 171.479661 156.860431 \n",
       "L 171.479661 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_95\">\n",
       "    <path d=\"M 124.191525 156.860431 \n",
       "L 171.479661 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_96\">\n",
       "    <path d=\"M 124.191525 82.733159 \n",
       "L 171.479661 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_14\">\n",
       "   <g id=\"patch_97\">\n",
       "    <path d=\"M 180.937288 156.860431 \n",
       "L 228.225424 156.860431 \n",
       "L 228.225424 82.733159 \n",
       "L 180.937288 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_98\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 183.086749 156.860431 \n",
       "L 186.596072 156.860431 \n",
       "L 186.596072 86.263029 \n",
       "L 183.086749 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_99\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 187.473403 156.860431 \n",
       "L 190.982727 156.860431 \n",
       "L 190.982727 156.860431 \n",
       "L 187.473403 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_100\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 191.860058 156.860431 \n",
       "L 195.369381 156.860431 \n",
       "L 195.369381 156.860431 \n",
       "L 191.860058 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_101\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 196.246712 156.860431 \n",
       "L 199.756036 156.860431 \n",
       "L 199.756036 156.860431 \n",
       "L 196.246712 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_102\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 200.633367 156.860431 \n",
       "L 204.14269 156.860431 \n",
       "L 204.14269 156.860431 \n",
       "L 200.633367 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_103\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 205.020021 156.860431 \n",
       "L 208.529345 156.860431 \n",
       "L 208.529345 156.860431 \n",
       "L 205.020021 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_104\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 209.406676 156.860431 \n",
       "L 212.915999 156.860431 \n",
       "L 212.915999 156.860431 \n",
       "L 209.406676 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_105\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 213.79333 156.860431 \n",
       "L 217.302654 156.860431 \n",
       "L 217.302654 156.860431 \n",
       "L 213.79333 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_106\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 218.179985 156.860431 \n",
       "L 221.689309 156.860431 \n",
       "L 221.689309 156.860431 \n",
       "L 218.179985 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_107\">\n",
       "    <path clip-path=\"url(#pb60e8a0b70)\" d=\"M 222.566639 156.860431 \n",
       "L 226.075963 156.860431 \n",
       "L 226.075963 156.860431 \n",
       "L 222.566639 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_4\">\n",
       "    <g id=\"xtick_10\">\n",
       "     <g id=\"line2d_10\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"184.841411\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_10\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(181.660161 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_11\">\n",
       "     <g id=\"line2d_11\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"206.774683\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_11\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(203.593433 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_12\">\n",
       "     <g id=\"line2d_12\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"228.707956\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_12\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(222.345456 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_108\">\n",
       "    <path d=\"M 180.937288 156.860431 \n",
       "L 180.937288 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_109\">\n",
       "    <path d=\"M 228.225424 156.860431 \n",
       "L 228.225424 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_110\">\n",
       "    <path d=\"M 180.937288 156.860431 \n",
       "L 228.225424 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_111\">\n",
       "    <path d=\"M 180.937288 82.733159 \n",
       "L 228.225424 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_15\">\n",
       "   <g id=\"patch_112\">\n",
       "    <path d=\"M 237.683051 156.860431 \n",
       "L 284.971186 156.860431 \n",
       "L 284.971186 82.733159 \n",
       "L 237.683051 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_113\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 239.832512 156.860431 \n",
       "L 243.341835 156.860431 \n",
       "L 243.341835 156.860431 \n",
       "L 239.832512 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_114\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 244.219166 156.860431 \n",
       "L 247.72849 156.860431 \n",
       "L 247.72849 156.860431 \n",
       "L 244.219166 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_115\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 248.605821 156.860431 \n",
       "L 252.115144 156.860431 \n",
       "L 252.115144 156.860431 \n",
       "L 248.605821 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_116\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 252.992475 156.860431 \n",
       "L 256.501799 156.860431 \n",
       "L 256.501799 156.860431 \n",
       "L 252.992475 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_117\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 257.37913 156.860431 \n",
       "L 260.888453 156.860431 \n",
       "L 260.888453 86.263029 \n",
       "L 257.37913 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_118\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 261.765784 156.860431 \n",
       "L 265.275108 156.860431 \n",
       "L 265.275108 156.860431 \n",
       "L 261.765784 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_119\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 266.152439 156.860431 \n",
       "L 269.661762 156.860431 \n",
       "L 269.661762 156.860431 \n",
       "L 266.152439 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_120\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 270.539093 156.860431 \n",
       "L 274.048417 156.860431 \n",
       "L 274.048417 156.860431 \n",
       "L 270.539093 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_121\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 274.925748 156.860431 \n",
       "L 278.435071 156.860431 \n",
       "L 278.435071 156.860431 \n",
       "L 274.925748 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_122\">\n",
       "    <path clip-path=\"url(#pd3d49b4c17)\" d=\"M 279.312402 156.860431 \n",
       "L 282.821726 156.860431 \n",
       "L 282.821726 156.860431 \n",
       "L 279.312402 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_5\">\n",
       "    <g id=\"xtick_13\">\n",
       "     <g id=\"line2d_13\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"241.587173\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_13\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(238.405923 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_14\">\n",
       "     <g id=\"line2d_14\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"263.520446\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_14\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(260.339196 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_15\">\n",
       "     <g id=\"line2d_15\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"285.453718\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_15\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(279.091218 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_123\">\n",
       "    <path d=\"M 237.683051 156.860431 \n",
       "L 237.683051 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_124\">\n",
       "    <path d=\"M 284.971186 156.860431 \n",
       "L 284.971186 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_125\">\n",
       "    <path d=\"M 237.683051 156.860431 \n",
       "L 284.971186 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_126\">\n",
       "    <path d=\"M 237.683051 82.733159 \n",
       "L 284.971186 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_16\">\n",
       "   <g id=\"patch_127\">\n",
       "    <path d=\"M 294.428814 156.860431 \n",
       "L 341.716949 156.860431 \n",
       "L 341.716949 82.733159 \n",
       "L 294.428814 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_128\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 296.578274 156.860431 \n",
       "L 300.087598 156.860431 \n",
       "L 300.087598 156.860431 \n",
       "L 296.578274 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_129\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 300.964929 156.860431 \n",
       "L 304.474252 156.860431 \n",
       "L 304.474252 86.263029 \n",
       "L 300.964929 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_130\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 305.351583 156.860431 \n",
       "L 308.860907 156.860431 \n",
       "L 308.860907 156.860431 \n",
       "L 305.351583 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_131\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 309.738238 156.860431 \n",
       "L 313.247561 156.860431 \n",
       "L 313.247561 156.860431 \n",
       "L 309.738238 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_132\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 314.124892 156.860431 \n",
       "L 317.634216 156.860431 \n",
       "L 317.634216 156.860431 \n",
       "L 314.124892 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_133\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 318.511547 156.860431 \n",
       "L 322.02087 156.860431 \n",
       "L 322.02087 156.860431 \n",
       "L 318.511547 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_134\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 322.898201 156.860431 \n",
       "L 326.407525 156.860431 \n",
       "L 326.407525 156.860431 \n",
       "L 322.898201 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_135\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 327.284856 156.860431 \n",
       "L 330.794179 156.860431 \n",
       "L 330.794179 156.860431 \n",
       "L 327.284856 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_136\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 331.67151 156.860431 \n",
       "L 335.180834 156.860431 \n",
       "L 335.180834 156.860431 \n",
       "L 331.67151 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_137\">\n",
       "    <path clip-path=\"url(#p60e19c0372)\" d=\"M 336.058165 156.860431 \n",
       "L 339.567488 156.860431 \n",
       "L 339.567488 156.860431 \n",
       "L 336.058165 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_6\">\n",
       "    <g id=\"xtick_16\">\n",
       "     <g id=\"line2d_16\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"298.332936\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_16\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(295.151686 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_17\">\n",
       "     <g id=\"line2d_17\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"320.266209\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_17\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(317.084959 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_18\">\n",
       "     <g id=\"line2d_18\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"342.199481\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_18\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(335.836981 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_138\">\n",
       "    <path d=\"M 294.428814 156.860431 \n",
       "L 294.428814 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_139\">\n",
       "    <path d=\"M 341.716949 156.860431 \n",
       "L 341.716949 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_140\">\n",
       "    <path d=\"M 294.428814 156.860431 \n",
       "L 341.716949 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_141\">\n",
       "    <path d=\"M 294.428814 82.733159 \n",
       "L 341.716949 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_17\">\n",
       "   <g id=\"patch_142\">\n",
       "    <path d=\"M 351.174576 156.860431 \n",
       "L 398.462712 156.860431 \n",
       "L 398.462712 82.733159 \n",
       "L 351.174576 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_143\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 353.324037 156.860431 \n",
       "L 356.833361 156.860431 \n",
       "L 356.833361 156.860431 \n",
       "L 353.324037 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_144\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 357.710691 156.860431 \n",
       "L 361.220015 156.860431 \n",
       "L 361.220015 156.860431 \n",
       "L 357.710691 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_145\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 362.097346 156.860431 \n",
       "L 365.60667 156.860431 \n",
       "L 365.60667 156.860431 \n",
       "L 362.097346 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_146\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 366.484001 156.860431 \n",
       "L 369.993324 156.860431 \n",
       "L 369.993324 156.860431 \n",
       "L 366.484001 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_147\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 370.870655 156.860431 \n",
       "L 374.379979 156.860431 \n",
       "L 374.379979 86.263029 \n",
       "L 370.870655 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_148\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 375.25731 156.860431 \n",
       "L 378.766633 156.860431 \n",
       "L 378.766633 156.860431 \n",
       "L 375.25731 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_149\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 379.643964 156.860431 \n",
       "L 383.153288 156.860431 \n",
       "L 383.153288 156.860431 \n",
       "L 379.643964 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_150\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 384.030619 156.860431 \n",
       "L 387.539942 156.860431 \n",
       "L 387.539942 156.860431 \n",
       "L 384.030619 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_151\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 388.417273 156.860431 \n",
       "L 391.926597 156.860431 \n",
       "L 391.926597 156.860431 \n",
       "L 388.417273 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_152\">\n",
       "    <path clip-path=\"url(#pd384f82c5d)\" d=\"M 392.803928 156.860431 \n",
       "L 396.313251 156.860431 \n",
       "L 396.313251 156.860431 \n",
       "L 392.803928 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_7\">\n",
       "    <g id=\"xtick_19\">\n",
       "     <g id=\"line2d_19\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"355.078699\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_19\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(351.897449 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_20\">\n",
       "     <g id=\"line2d_20\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"377.011971\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_20\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(373.830721 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_21\">\n",
       "     <g id=\"line2d_21\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"398.945244\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_21\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(392.582744 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_153\">\n",
       "    <path d=\"M 351.174576 156.860431 \n",
       "L 351.174576 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_154\">\n",
       "    <path d=\"M 398.462712 156.860431 \n",
       "L 398.462712 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_155\">\n",
       "    <path d=\"M 351.174576 156.860431 \n",
       "L 398.462712 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_156\">\n",
       "    <path d=\"M 351.174576 82.733159 \n",
       "L 398.462712 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_18\">\n",
       "   <g id=\"patch_157\">\n",
       "    <path d=\"M 407.920339 156.860431 \n",
       "L 455.208475 156.860431 \n",
       "L 455.208475 82.733159 \n",
       "L 407.920339 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_158\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 410.0698 156.860431 \n",
       "L 413.579123 156.860431 \n",
       "L 413.579123 156.860431 \n",
       "L 410.0698 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_159\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 414.456454 156.860431 \n",
       "L 417.965778 156.860431 \n",
       "L 417.965778 156.860431 \n",
       "L 414.456454 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_160\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 418.843109 156.860431 \n",
       "L 422.352432 156.860431 \n",
       "L 422.352432 156.860431 \n",
       "L 418.843109 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_161\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 423.229763 156.860431 \n",
       "L 426.739087 156.860431 \n",
       "L 426.739087 156.860431 \n",
       "L 423.229763 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_162\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 427.616418 156.860431 \n",
       "L 431.125741 156.860431 \n",
       "L 431.125741 156.860383 \n",
       "L 427.616418 156.860383 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_163\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 432.003072 156.860431 \n",
       "L 435.512396 156.860431 \n",
       "L 435.512396 156.860431 \n",
       "L 432.003072 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_164\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 436.389727 156.860431 \n",
       "L 439.89905 156.860431 \n",
       "L 439.89905 156.860431 \n",
       "L 436.389727 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_165\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 440.776381 156.860431 \n",
       "L 444.285705 156.860431 \n",
       "L 444.285705 156.860431 \n",
       "L 440.776381 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_166\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 445.163036 156.860431 \n",
       "L 448.672359 156.860431 \n",
       "L 448.672359 156.860431 \n",
       "L 445.163036 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_167\">\n",
       "    <path clip-path=\"url(#p9f1da5d872)\" d=\"M 449.54969 156.860431 \n",
       "L 453.059014 156.860431 \n",
       "L 453.059014 86.263029 \n",
       "L 449.54969 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_8\">\n",
       "    <g id=\"xtick_22\">\n",
       "     <g id=\"line2d_22\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"411.824461\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_22\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(408.643211 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_23\">\n",
       "     <g id=\"line2d_23\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"433.757734\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_23\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(430.576484 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_24\">\n",
       "     <g id=\"line2d_24\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"455.691007\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_24\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(449.328507 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_168\">\n",
       "    <path d=\"M 407.920339 156.860431 \n",
       "L 407.920339 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_169\">\n",
       "    <path d=\"M 455.208475 156.860431 \n",
       "L 455.208475 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_170\">\n",
       "    <path d=\"M 407.920339 156.860431 \n",
       "L 455.208475 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_171\">\n",
       "    <path d=\"M 407.920339 82.733159 \n",
       "L 455.208475 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_19\">\n",
       "   <g id=\"patch_172\">\n",
       "    <path d=\"M 464.666102 156.860431 \n",
       "L 511.954237 156.860431 \n",
       "L 511.954237 82.733159 \n",
       "L 464.666102 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_173\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 466.815562 156.860431 \n",
       "L 470.324886 156.860431 \n",
       "L 470.324886 156.860431 \n",
       "L 466.815562 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_174\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 471.202217 156.860431 \n",
       "L 474.711541 156.860431 \n",
       "L 474.711541 156.860431 \n",
       "L 471.202217 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_175\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 475.588871 156.860431 \n",
       "L 479.098195 156.860431 \n",
       "L 479.098195 156.860431 \n",
       "L 475.588871 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_176\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 479.975526 156.860431 \n",
       "L 483.48485 156.860431 \n",
       "L 483.48485 156.860431 \n",
       "L 479.975526 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_177\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 484.36218 156.860431 \n",
       "L 487.871504 156.860431 \n",
       "L 487.871504 86.263029 \n",
       "L 484.36218 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_178\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 488.748835 156.860431 \n",
       "L 492.258159 156.860431 \n",
       "L 492.258159 156.860423 \n",
       "L 488.748835 156.860423 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_179\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 493.135489 156.860431 \n",
       "L 496.644813 156.860431 \n",
       "L 496.644813 156.860431 \n",
       "L 493.135489 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_180\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 497.522144 156.860431 \n",
       "L 501.031468 156.860431 \n",
       "L 501.031468 156.860431 \n",
       "L 497.522144 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_181\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 501.908798 156.860431 \n",
       "L 505.418122 156.860431 \n",
       "L 505.418122 156.860431 \n",
       "L 501.908798 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_182\">\n",
       "    <path clip-path=\"url(#pfe573f8f06)\" d=\"M 506.295453 156.860431 \n",
       "L 509.804777 156.860431 \n",
       "L 509.804777 156.860431 \n",
       "L 506.295453 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_9\">\n",
       "    <g id=\"xtick_25\">\n",
       "     <g id=\"line2d_25\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"468.570224\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_25\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(465.388974 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_26\">\n",
       "     <g id=\"line2d_26\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"490.503497\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_26\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(487.322247 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_27\">\n",
       "     <g id=\"line2d_27\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"512.436769\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_27\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(506.074269 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_183\">\n",
       "    <path d=\"M 464.666102 156.860431 \n",
       "L 464.666102 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_184\">\n",
       "    <path d=\"M 511.954237 156.860431 \n",
       "L 511.954237 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_185\">\n",
       "    <path d=\"M 464.666102 156.860431 \n",
       "L 511.954237 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_186\">\n",
       "    <path d=\"M 464.666102 82.733159 \n",
       "L 511.954237 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       "  <g id=\"axes_20\">\n",
       "   <g id=\"patch_187\">\n",
       "    <path d=\"M 521.411864 156.860431 \n",
       "L 568.7 156.860431 \n",
       "L 568.7 82.733159 \n",
       "L 521.411864 82.733159 \n",
       "z\n",
       "\" style=\"fill:#ffffff;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_188\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 523.561325 156.860431 \n",
       "L 527.070649 156.860431 \n",
       "L 527.070649 156.860431 \n",
       "L 523.561325 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_189\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 527.94798 156.860431 \n",
       "L 531.457303 156.860431 \n",
       "L 531.457303 156.860431 \n",
       "L 527.94798 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_190\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 532.334634 156.860431 \n",
       "L 535.843958 156.860431 \n",
       "L 535.843958 156.860431 \n",
       "L 532.334634 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_191\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 536.721289 156.860431 \n",
       "L 540.230612 156.860431 \n",
       "L 540.230612 156.860431 \n",
       "L 536.721289 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_192\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 541.107943 156.860431 \n",
       "L 544.617267 156.860431 \n",
       "L 544.617267 156.860431 \n",
       "L 541.107943 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_193\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 545.494598 156.860431 \n",
       "L 549.003921 156.860431 \n",
       "L 549.003921 156.860431 \n",
       "L 545.494598 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_194\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 549.881252 156.860431 \n",
       "L 553.390576 156.860431 \n",
       "L 553.390576 156.860431 \n",
       "L 549.881252 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_195\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 554.267907 156.860431 \n",
       "L 557.77723 156.860431 \n",
       "L 557.77723 156.744596 \n",
       "L 554.267907 156.744596 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_196\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 558.654561 156.860431 \n",
       "L 562.163885 156.860431 \n",
       "L 562.163885 156.860431 \n",
       "L 558.654561 156.860431 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_197\">\n",
       "    <path clip-path=\"url(#p203cb0c0e7)\" d=\"M 563.041216 156.860431 \n",
       "L 566.550539 156.860431 \n",
       "L 566.550539 86.263029 \n",
       "L 563.041216 86.263029 \n",
       "z\n",
       "\" style=\"fill:#1f77b4;\"/>\n",
       "   </g>\n",
       "   <g id=\"matplotlib.axis_10\">\n",
       "    <g id=\"xtick_28\">\n",
       "     <g id=\"line2d_28\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"525.315987\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_28\">\n",
       "      <!-- 0 -->\n",
       "      <g transform=\"translate(522.134737 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_29\">\n",
       "     <g id=\"line2d_29\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"547.249259\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_29\">\n",
       "      <!-- 5 -->\n",
       "      <g transform=\"translate(544.068009 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-53\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "    <g id=\"xtick_30\">\n",
       "     <g id=\"line2d_30\">\n",
       "      <g>\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"569.182532\" xlink:href=\"#mda3492f907\" y=\"156.860431\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "     <g id=\"text_30\">\n",
       "      <!-- 10 -->\n",
       "      <g transform=\"translate(562.820032 171.458869)scale(0.1 -0.1)\">\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
       "      </g>\n",
       "     </g>\n",
       "    </g>\n",
       "   </g>\n",
       "   <g id=\"patch_198\">\n",
       "    <path d=\"M 521.411864 156.860431 \n",
       "L 521.411864 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_199\">\n",
       "    <path d=\"M 568.7 156.860431 \n",
       "L 568.7 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_200\">\n",
       "    <path d=\"M 521.411864 156.860431 \n",
       "L 568.7 156.860431 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "   <g id=\"patch_201\">\n",
       "    <path d=\"M 521.411864 82.733159 \n",
       "L 568.7 82.733159 \n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
       "   </g>\n",
       "  </g>\n",
       " </g>\n",
       " <defs>\n",
       "  <clipPath id=\"p473672dd43\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"10.7\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p1b54e45d93\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"67.445763\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p9f277a5131\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"124.191525\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p081378e6ee\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"180.937288\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pa41f52da23\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"237.683051\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pc83c63004b\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"294.428814\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pb00e2c8c5e\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"351.174576\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p02e9223300\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"407.920339\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pf131eb3856\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"464.666102\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"paa531159b7\">\n",
       "   <rect height=\"47.288136\" width=\"47.288136\" x=\"521.411864\" y=\"7.2\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p2998c20bd3\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"10.7\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p7d6699d5ce\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"67.445763\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p5812111120\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"124.191525\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pb60e8a0b70\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"180.937288\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pd3d49b4c17\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"237.683051\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p60e19c0372\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"294.428814\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pd384f82c5d\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"351.174576\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p9f1da5d872\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"407.920339\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"pfe573f8f06\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"464.666102\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       "  <clipPath id=\"p203cb0c0e7\">\n",
       "   <rect height=\"74.127273\" width=\"47.288136\" x=\"521.411864\" y=\"82.733159\"/>\n",
       "  </clipPath>\n",
       " </defs>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<Figure size 720x216 with 20 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "logpx = torch.log(px)\n",
    "logpxneg = torch.log(1-px)\n",
    "logpy = torch.log(py)\n",
    "\n",
    "def bayespost(data):\n",
    "    # We need to incorporate the prior probability p(y) since p(y|x) is\n",
    "    # proportional to p(x|y) p(y)\n",
    "    logpost = logpy.clone()\n",
    "    logpost += (logpx * data + logpxneg * (1-data)).sum(0)\n",
    "    # Normalize to prevent overflow or underflow by subtracting the largest\n",
    "    # value\n",
    "    logpost -= torch.max(logpost)\n",
    "    # Compute the softmax using logpx\n",
    "    post = torch.exp(logpost).numpy()\n",
    "    post /= np.sum(post)\n",
    "    return post\n",
    "\n",
    "fig, figarr = plt.subplots(2, 10, figsize=(10, 3))\n",
    "\n",
    "# Show 10 images\n",
    "ctr = 0\n",
    "for data, label in mnist_test:\n",
    "    x = data.reshape((784,1))\n",
    "    y = int(label)\n",
    "\n",
    "    post = bayespost(x)\n",
    "\n",
    "    # Bar chart and image of digit\n",
    "    figarr[1, ctr].bar(range(10), post)\n",
    "    figarr[1, ctr].axes.get_yaxis().set_visible(False)\n",
    "    figarr[0, ctr].imshow(x.reshape((28, 28)).numpy(), cmap='hot')\n",
    "    figarr[0, ctr].axes.get_xaxis().set_visible(False)\n",
    "    figarr[0, ctr].axes.get_yaxis().set_visible(False)\n",
    "    ctr += 1\n",
    "\n",
    "    if ctr == 10:\n",
    "        break\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, this classifier works pretty well in many cases. However, the second last digit shows that it can be both incompetent and overly confident of its incorrect estimates. That is, even if it is horribly wrong, it generates probabilities close to 1 or 0. Not a classifier we should use very much nowadays any longer. To see how well it performs overall, let's compute the overall accuracy of the classifier."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Naive Bayes has an error rate of 0.1553\n"
     ]
    }
   ],
   "source": [
    "# Initialize counter\n",
    "ctr = 0\n",
    "err = 0\n",
    "\n",
    "for data, label in mnist_test:\n",
    "    ctr += 1\n",
    "    x = data.reshape((784,1))\n",
    "    y = int(label)\n",
    "\n",
    "    post = bayespost(x)\n",
    "    if (post[y] < post.max()):\n",
    "        err += 1\n",
    "\n",
    "print('Naive Bayes has an error rate of', err/ctr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Modern deep networks achieve error rates of less than 0.01. While Naive Bayes classifiers used to be popular in the 80s and 90s, e.g. for spam filtering, their heydays are over. The poor performance is due to the incorrect statistical assumptions that we made in our model: we assumed that each and every pixel are *independently* generated, depending only on the label. This is clearly not how humans write digits, and this wrong assumption led to the downfall of our overly naive (Bayes) classifier. Time to start building Deep Networks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summary\n",
    "\n",
    "* Naive Bayes is an easy to use classifier that uses the assumption\n",
    "  $p(\\mathbf{x} | y) = \\prod_i p(x_i | y)$.\n",
    "* The classifier is easy to train but its estimates can be very wrong.\n",
    "* To address overly confident and nonsensical estimates, the\n",
    "  probabilities $p(x_i|y)$ are smoothed, e.g. by Laplace\n",
    "  smoothing. That is, we add a constant to all counts.\n",
    "* Naive Bayes classifiers don't exploit any correlations between\n",
    "  observations.\n",
    "\n",
    "## Exercises\n",
    "\n",
    "1. Design a Naive Bayes regression estimator where $p(x_i | y)$ is a normal distribution.\n",
    "1. Under which situations does Naive Bayes work?\n",
    "1. An eyewitness is sure that he could recognize the perpetrator with 90% accuracy, if he were to encounter him again.\n",
    "   * Is this a useful statement if there are only 5 suspects?\n",
    "   * Is it still useful if there are 50?"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
